Si un script /path/to/foo
comienza con #!/bin/bash
, entonces ejecutar /path/to/foo arg1 arg2
es equivalente a ejecutar /bin/bash /path/too/foo arg1 arg2
. Si la línea shebang es #!/bin/bash -ex
, es equivalente a ejecutar /bin/bash -ex /path/too/foo arg1 arg2
. Esta característica es administrada por el núcleo.
Tenga en cuenta que solo puede tener un argumento de manera portátil en la línea shebang: algunos unices (como Linux) solo aceptan un argumento, por lo que #!/bin/bash -e -x
bash recibiría el argumento de cinco caracteres -e -x
(un error de sintaxis) en lugar de dos argumentos -e
y -x
.
Para el shell Bourne sh
y los shells derivados como POSIX sh, bash, ksh y zsh:
-e
significa que si algún comando falla (lo que indica al devolver un estado distinto de cero), el script finalizará de inmediato.
-x
hace que el shell imprima un seguimiento de ejecución.
Otros programas pueden entender estas opciones pero con diferentes significados.