bash y dash. Necesito algunas aclaraciones

Camilo camilo.uribe en gmail.com
Mar Jun 3 23:07:46 BST 2008


2008/6/3 Primitivo Pajares <crispulas en yahoo.es>:
> Al cambiar de Ubuntu 7.10 a Ubuntu 8.04 me he encontrado con la sorpresa de
> que la shell que tiene instalada por defecto ya no es bash, sino dash.
>
> En la dirección web http://www.ubuntu.com/getubuntu/releasenotes/804 en su
> sección "/bin/sh is now dash" y en el enlace de esta sección, he leído algo
> que no he entendido muy bien, pues mi nivel de inglés es bastante bajo. Lo
> que yo he podido entender es lo siguiente:
>
>     --> A partir de Ubuntu 8.04, la shell por defecto es dash.
>
>     En un principio pensé que esa era la shell que se iba a usar en las
> consolas virtuales, pero de una lectura más detenida he llegado a darme
> cuenta de que Ubuntu 8.04 usa dos shell: una para el sistema (system shell)
> y otra para las terminales (login shell). Parece ser que en la versión 6.06
> la system shell era sh, que en versiones anteriores era bash y que que en la
> versión 6.10 se sustituyó la shell sh por la dash. Sin embargo, lo que está
> claro es que la login shell sigue siendo bash: eso es lo que deduzco del
> texto de la dirección web aquí citada y también de que el comando "ps" en la
> consola virtual arroja el resultado:
> PID TTY          TIME CMD
>  6411 pts/0    00:00:00 bash
>  6428 pts/0    00:00:00 ps
>
>     --> También creo haber entendido que, dash sigue los estándares de POSIX
> y que bash no los sigue.
>
>     Parece que hay unas cuantas extensiones (no sé si extensión significa lo
> mismo que comando) de bash a los que consideran bashismos y que parece ser
> que hay que evitar para cumplir con los estándares POSIX y por consiguiente
> crear scripts portables a otros sistemas operativos Unix.
>
>
> Pues bien, me gustaría saber lo siguiente:
>
>   -- Cuáles son estos bashismos para poder evitarlos y así crear scripts
> portables.

En la pagina que citas dan un buen enlace con respuesta a casi todas
tus preguntas[1], aunque esta en ingles...

>   -- Existe algún libro o tutorial que enseñe a programar en dash, para así
> poder crear scripst portables
El estándar posix[2]

>   -- Si creo un script en bash y lo ejecuto desde el escritorio gnome, ¿que
> intérprete de comandos usaría, el de la system shell o el de la login shel?
El que pongas en la primera linea del script:

bash si pones #!/bin/bash
dash si pones #!/bin/sh o #!/bin/dash

>   -- ¿Puede darme problemas a la hora de ejecutar algún script escrito en
> bash el echo de que la system shell sea dash?
No siempre y cuando tu script sea interpretado por bash

> ¡Gracias de antemano!
Realmente no vale la pena que te preocupes por esto excepto que seas
un desarrollador de Ubuntu.

Si tus scripts están hechos para bash y quieres que sigan funcionando
como siempre simplemente indicales en la primera linea que esa es la
shell que deben usar: #!/bin/bash

> PRIMITIVO PAJARES
>
>
> ________________________________
> Enviado desde Correo Yahoo!
> La bandeja de entrada más inteligente.
>
> --
> ubuntu-es mailing list
> ubuntu-es en lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-es
>

[1] https://wiki.ubuntu.com/DashAsBinSh
[2] http://es.wikipedia.org/wiki/POSIX

-- 
Únete a la lista de correo sobre el desarrollo de software con
herramientas de software libre
http://slcolombia.org/Sl-prog



Más información sobre la lista de distribución ubuntu-es