Bash Шебанг (Shebang)
Bash Шебанг (Shebang)
Bash Shebang
Если вы изучаете скрипты Bash, читая чужой код, вы могли заметить, что первая строка скриптов начинается с # символов и пути к интерпретатору Bash.

Эта последовательность символов ( #!
) называется shebang и используется для указания операционной системе, какой интерпретатор использовать для анализа остальной части файла.
Директива интерпретатора
Директива интерпретатора Shebang имеет следующий вид:
#!interpreter [arguments]
- Директива должна быть первой строкой в скрипте.
- Директива должна начинаться с Шебанга
#!
- Пробел после символов Шебанга не является обязательным.
- Интерпретатор - это полный путь к двоичному файлу (например
/bin/sh
,/bin/bash
). - Аргументы интерпретатора являются необязательными.
Примеры:
#!/bin/bash
- Используетbash
для разбора файла.#!/usr/bin/env perl
- Используетenv
команду для поиска пути кperl
исполняемому файлу.#!/usr/bin/python
Выполняет файл, используяpython
двоичный файл.
Использование Shebang в скриптах Bash
Если shebang не указан и пользователь, выполняющий скрипт Bash, использует другую оболочку, сценарий будет проанализирован любым интерпретатором по умолчанию, который используется этой оболочкой. Например, интерпретатор по умолчанию для bash
is bash
и for zsh
is sh
. Чтобы ваш скрипт всегда интерпретировался с помощью Bash, вам необходимо указать путь к исполняемому файлу с помощью shebang.
Есть два способа использовать директиву Шебанга и установить интерпретатор.
-
Используя абсолютный путь к двоичному файлу bash:
#!/bin/bash
-
Используя
env
утилиту:#!/usr/bin/env bash
Преимущество использования второго подхода состоит в том, что он будет искать bash
исполняемый файл в пользовательской $PATH
переменной среды. Если существует более одного пути bash
, первый будет использоваться сценарием.
При использовании первой опции для добавления опции в поставку оболочки Bash передайте ее интерпретатору. Например, чтобы запустить скрипт в режиме отладки, вы бы использовали #!/bin/bash -x
. Если вы используете env
метод, вам нужно использовать set
для объявления опции. Чтобы включить режим отладки, вы должны добавить set -x
после строки shebang.
Пример скрипта
Давайте создадим простой скрипт с использованием shebang, который выведет «Hello, World». Откройте ваш текстовый редактор и вставьте следующую строку:
nano hello_world
#!/bin/bash
echo "Hello, World"
Чтобы иметь возможность запускать скрипт без указания интерпретатора из командной строки, вам необходимо сделать исполняемый файл :
chmod +x hello_world
Теперь, если вы можете запустить скрипт, набрав, ./
а затем имя скрипта:
./hello_world
Hello, World
Переопределение Шебанга
Если по какой-то причине вы хотите переопределить набор интерпретаторов в строке Shebang, вам нужно запустить скрипт, явно указав требуемую оболочку.
Например, чтобы запустить сценарий, #!/bin/sh
указанный в строке Shebang, с помощью bash
оболочки, введите:
bash hello_world
Обратите внимание, что не стоит переопределять интерпретатор оболочки, так как это может привести к неожиданному поведению скрипта.
Вывод
К настоящему времени вы должны хорошо понимать, что такое Шебанг и как использовать его в ваших скриптах Bash.