Si un script /chemin/vers/foo
commence par #!/bin/bash
, alors l'exécution de /chemin/vers/foo arg1 arg2
est équivalente à l'exécution de /bin/bash /chemin/vers/foo arg1 arg2
. Si la ligne shebang est #!/bin/bash -ex
, cela équivaut à exécuter /bin/bash -ex /chemin/vers/foo arg1 arg2
. Cette fonctionnalité est gérée par le noyau.
Remarquez que vous ne pouvez portez qu'un seul argument sur la ligne shebang : certains Unix (comme Linux) n'acceptent qu'un seul argument, de sorte que #!/bin/bash -e -x
mènerait à l'envoi à bash de l'unique argument de cinq caractères -e -x
(une erreur de syntaxe) au lieu de deux arguments -e
et -x
.
Pour le shell Bourne sh
et les shells dérivés tels que le sh POSIX, bash, ksh et zsh :
-e
signifie que si une commande échoue (ce qu'elle indique en retournant un statut différent de zéro) le script se terminera immédiatement.
-x
fait en sorte que le shell imprime une trace d'exécution.
D'autres programmes peuvent comprendre ces options mais avec des significations différentes.