Se um script /path/to/foo
começar com #!/bin/bash
, a execução de /path/to/foo arg1 arg2
será equivalente a executar /bin/bash /path/too/foo arg1 arg2
. Se a linha shebang for #!/bin/bash -ex
, é equivalente a executar /bin/bash -ex /path/too/foo arg1 arg2
. Esse recurso é gerenciado pelo kernel.
Note que você pode portar apenas um argumento na linha shebang: alguns unices (como o Linux) aceitam apenas um argumento, então #!/bin/bash -e -x
levaria a receber o único argumento de cinco caracteres -e -x
(a 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 ao retornar um status diferente de zero), o script será encerrado imediatamente. -
-x
faz com que o shell imprima um rastreio de execução.
Outros programas podem entender essas opções, mas com diferentes significados.