Якщо сценарій /path/to/foo
починається з #!/bin/bash
, тоді виконання /path/to/foo arg1 arg2
еквівалентно виконанню /bin/bash /path/too/foo arg1 arg2
. Якщо лінія shebang є #!/bin/bash -ex
, вона еквівалентна виконанню /bin/bash -ex /path/too/foo arg1 arg2
. Цією функцією керує ядро.
Зауважте, що ви можете перенести лише один аргумент у рядку shebang: деякі уніці (наприклад, Linux) приймають лише один аргумент, так що #!/bin/bash -e -x
це призведе до того, що баш отримає єдиний аргумент п’яти символів -e -x
(синтаксична помилка), а не два аргументи -e
та -x
.
Для оболонки Борна sh
та похідних оболонок, таких як POSIX sh, bash, ksh та zsh:
-e
означає, що якщо будь-яка команда виходить з ладу (що вона вказує, повертаючи ненульовий статус), сценарій негайно припиняється.
-x
викликає оболонку для друку сліду виконання.
Інші програми можуть розуміти ці параметри, але з різним значенням.