bash o sh?

Llevo varios dias con el tema. Viendo programas me encuentro que casi todos estan escritos en sh, pero la mayoria de la gente me encuentro que lo que usa es bash (tanto para programacion como para consola). No se si existira alguna "gran" diferencia entre los dos tipos, ya que lo unico que he encontrado diferente ha sido la sintaxis. De bash dicen que es muy facil (cosa que no voy ha decir que no) y de sh que se parece mucho a c/c++.

Mi duda es, ¿cual es mejor?(si esque se puede decir a asi, o esque simplemente son diferentes)
Y otra cosa, simple curiosidad, ¿cual usais vosotros?(programacion/consola)

Venga, saludos y gracias!
\-\adEs escribió:Llevo varios dias con el tema. Viendo programas me encuentro que casi todos estan escritos en sh, pero la mayoria de la gente me encuentro que lo que usa es bash (tanto para programacion como para consola). No se si existira alguna "gran" diferencia entre los dos tipos, ya que lo unico que he encontrado diferente ha sido la sintaxis. De bash dicen que es muy facil (cosa que no voy ha decir que no) y de sh que se parece mucho a c/c++.


A riesgo de equivocarme: no es así, bash es un sh con extensiones. El shell que tiene una sintaxis parecida a c es csh/tcsh (creo recordar).
Más que nada, creo que es porque sh es estándar, lo hay en cualquier Unix. De hecho, si un usuario no tiene shell asignada, se carga sh.
Vale, una cosa aclarada sh != tcsh [+risas] (mira que puedo llegar a ser cateto....)

Entonces sh es una extension de bash, ¿no? pero si es asi..... ¿no deberian de crearse los programas en bash en vez de sh? al ser una extension tendria que ser mas completo (corregirme si me equivoco).

En caso de que sea el estandar de UNIX entenderia lo de que los programas estuviesen escritos en sh.

Saludos y gracias!
No no, bash es la extensión de sh, no al revés.

BASH es GNU Bourne-Again SHell
\-\adEs escribió:Vale, una cosa aclarada sh != tcsh [+risas] (mira que puedo llegar a ser cateto....)

Entonces sh es una extension de bash, ¿no? pero si es asi..... ¿no deberian de crearse los programas en bash en vez de sh? al ser una extension tendria que ser mas completo (corregirme si me equivoco).


No, es al revés. bash es un sh con extensiones; es decir, bash tiene todo lo que tiene sh y, además otras funcionalidades. Por ejemplo, me parece que "sh" no tiene expansión de parámetros; mientras que bash sí que la tiene. ¿Qué significa esto? Pues que en bash, a la variable:

FOTO="nombre.JPG"

le quiero cambiar el "JPG" por "jpg" me basta hacer:

FOTO="${FOTO%.JPG}.jpg"

mientras que en sh me las tendría que apañar ejecutando sed en una subshell:

FOTO=$(echo $FOTO | sed 's/JPG$/jpg/')

Evidentemente lo segundo es más engorroso.

¿En qué tienes que programar tus script? Pues depende de tus necesidades. Si una de tus prioridades es que el script sea muy, muy portable, lo mejor es que no uses las extensiones de bash. Sin embargo, si prevés que tus script sólo se van a ejecutar en linux, lo más probable es que sea más adecuado que emplees las extensiones de bash, puesto que en los linux bash es el entorno shell por defecto.
Sorry! Me equivoque al escribir. Bash es la extension de sh, no al reves :(

Sorry! y gracias por la información! :D
6 respuestas