2011-09-30 32 views
8

Supongamos que tiene un script bash B, que está obteniendo de otro script bash A. B tiene un conjunto de definiciones de variables y funciones. A es el script del controlador principal. ¿Necesita la línea #!/Bin/bash en la parte superior de A y B? ¿Qué pasa si lo haces y si no?¿Necesita shebang en todos los scripts bash?

+0

Puede obtener la respuesta aquí, pero ¿lo intentó? – jman

Respuesta

10

El shebang solo es obligatorio para esos scripts, que serán ejecutados por el sistema operativo de la misma manera que los ejecutables binarios. Si busca en otro script, entonces se ignora el shebang.

Por otro lado. SI se supone que un script debe ser fuente, entonces es una convención NO poner ningún shebang al principio.

10

El shebang se usa si ejecuta el script directamente como un archivo ejecutable (por ejemplo, con el comando ./script.sh). En este caso, le dice al sistema operativo qué ejecutable ejecutar.

No es necesario y no tiene ningún efecto si, por ejemplo, escribe bash ./script.sh o crea la secuencia de comandos.

+1

... o cuando obtiene el script :) –

+1

Tampoco es necesario si ya está en un mensaje bash - supone que el script será bash (y otros shells normalmente asumen que los scripts también son para ellos) –

1

Debe usar shebang en todas las secuencias de comandos, especialmente las que utilizan funciones compatibles no sh.

En Debian, por ejemplo, el shell predeterminado es guión (no bash). Si usa la función bash-only y no especifica que este script debe ser interpretado por bash, puede fallar incluso en Linux. Fallará en Solaris o HP-UX casi con seguridad.

Si su archivo va a ser solo fuentes de otras secuencias de comandos, puede omitir la línea shebang pero no establecer el permiso ejecutable. También para tales archivos es bueno mantener la compatibilidad/bin/sh.

Recomiendo leer DashAsBinSh.

Cuestiones relacionadas