Если скрипт /path/to/foo
начинается с #!/bin/bash
, затем выполнение /path/to/foo arg1 arg2
эквивалентно выполнению /bin/bash /path/too/foo arg1 arg2
. Если линия Шебанга #!/bin/bash -ex
, это эквивалентно выполнению /bin/bash -ex /path/too/foo arg1 arg2
. Эта функция управляется ядром.
Обратите внимание, что вы можете переносить только один аргумент в строке shebang: некоторые юниты (например, Linux) принимают только один аргумент, так что #!/bin/bash -e -x
приведет к тому, что bash получит единственный пятисимвольный аргумент -e -x
(синтаксическая ошибка), а не два аргумента -e
и -x
.
Для оболочки Bourne sh
и производных оболочек, таких как POSIX sh, bash, ksh и zsh:
-e
означает, что в случае сбоя какой-либо команды (на что указывает возвращаемое ненулевое состояние) сценарий будет немедленно завершен.
-x
заставляет оболочку печатать трассировку выполнения.
Другие программы могут понимать эти параметры, но с другими значениями.