Bash Шебанг (Shebang)

Bash Shebang

22 Июня 2020 | Терминал

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

Bash Шебанг (Shebang)

Эта последовательность символов ( #! ) называется 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.

Есть два способа использовать директиву Шебанга и установить интерпретатор.

  1. Используя абсолютный путь к двоичному файлу bash:

    #!/bin/bash 

  2. Используя 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.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...