Se um script /path/to/foo
começar #!/bin/bash
, a execução /path/to/foo arg1 arg2
será equivalente à execução /bin/bash /path/too/foo arg1 arg2
. Se a linha shebang for #!/bin/bash -ex
, é equivalente à execução /bin/bash -ex /path/too/foo arg1 arg2
. Esse recurso é gerenciado pelo kernel.
Observe que você pode portabilidade ter apenas um argumento na linha shebang: alguns departamentos (como o Linux) aceitam apenas um argumento, o que #!/bin/bash -e -x
levaria o bash a receber o único argumento de cinco caracteres -e -x
(um erro de sintaxe) em vez de dois argumentos -e
e -x
.
Para o shell Bourne sh
e shells derivados, como POSIX sh, bash, ksh e zsh:
-e
significa que, se algum comando falhar (o que indica retornando um status diferente de zero), o script será encerrado imediatamente.
-x
faz com que o shell imprima um rastreamento de execução.
Outros programas podem entender essas opções, mas com significados diferentes.