Los programas en Bash deben tener en la primera linea:
#!/bin/bash
De esa linea #! indica que es debe de ser interpretado por un programa; la ruta que le sigue especifica donde se encuentra el interprete de comandos. Por defecto el Bash se instala en /bin/bash.
http://www.gnu.org/software/bash/manual/bashref.html
http://en.wikipedia.org/wiki/Bash
http://www.linux-es.org/node/147
Que pasa si omitís la primer línea especificando el interprete de comandos? Pregunta de parcial. Usa el que tenes seteado por defecto para el user?
A cada usuario se le asigna una shell en /etc/passwd, hace mucho tiempo leí que en Linux si no especificas el interprete utiliza la shell que tiene por defecto. La única referencia a esto la encontré en http://www.iac.es/sieinvens/SINFIN/CursoUnix/cap8.php
Hice una prueba haciendo un script en python pero sin indicar el interprete, fallaba en cuanto encontraba un comando desconocido para mi shell, en cambio funcionaba sin problemas cuando utilizaba los de ella. Si haces esta prueba no olvides primero dar permisos de ejecución al script con chmod +X SCRIPT y luego llamarlo con ./SCRIPT
Un poco más de info:
Ves el contenido de /etc/passwd con:
Buscas la linea que tiene el nombre del usuario en cuestión:
Ahí me esta diciendo que TU_USUARIO usa la shell de bash (Boune Again Shell). Siempre es el ultimo campo.
Otra manera es:
Los interpretes se llaman con shebang (los signos #!) seguido de la ruta de el o con ENV. A veces los script fallan porque los interpretes se encuentran en rutas distintas y con ENV puede estar en cualquier parte y de todas maneras lo encuentra.
Averiguas el interprete y ENV con:
A bash también la puedes encontrar con:
http://www.iac.es/sieinvens/SINFIN/CursoUnix/cap8.php
http://wiki.softwarelivre.org/TWikiBar/TWikiBarConversa001
http://www.cyberciti.biz/tips/finding-bash-perl-python-portably-using-env.html
http://www.cyberciti.biz/tips/finding-bash-perl-python-portably-using-env.html