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:
-
-esignifica que, se algum comando falhar (o que indica ao retornar um status diferente de zero), o script será encerrado imediatamente. -
-xfaz com que o shell imprima um rastreio de execução.
Outros programas podem entender essas opções, mas com diferentes significados.