ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Использование Shebang в оболочке Bash

Shebang в Оболочки Linux Bash

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

Эта последовательность символов ( #!) называется shebang и используется, чтобы сообщить операционной системе, какой интерпретатор использовать для анализа остальной части файла.

 

Директива интерпретатора Shebang имеет следующий вид:

#!interpreter [arguments]

 

Примеры:

 

Если shebang не указан и пользователь, выполняющий сценарий Bash, использует другую оболочку, сценарий будет проанализирован любым интерпретатором по умолчанию, который используется этой оболочкой. Например, интерпретатор по умолчанию для bashis bash и for zshis sh. Чтобы ваш скрипт всегда интерпретировался с помощью Bash, вам необходимо указать путь к исполняемому файлу с помощью shebang.

Есть два способа использовать директиву 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

 

Содержание файла hello_world:
#!/bin/bash

echo "Hello, World"

 

Чтобы иметь возможность запускать скрипт без указания интерпретатора из командной строки, вам нужно сделать файл исполняемым:

chmod +x hello_world

Теперь, если вы можете запустить скрипт, набрав ./ после имени скрипта:

./hello_world

 

Hello, World

 

Если по какой-то причине вы хотите переопределить набор интерпретаторов в строке Shebang, вам нужно запустить скрипт, явно указав требуемую оболочку.

Например, чтобы запустить сценарий, #!/bin/sh указанный в строке Shebang, с помощью оболочки bash, введите:

bash hello_world

Обратите внимание, что не стоит переопределять интерпретатор оболочки, так как это может привести к неожиданному поведению скрипта.

 

К настоящему времени вы должны хорошо понимать, что такое Shebang и как использовать его в ваших скриптах Bash.

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

Exit mobile version