Мы редко до конца понимаем, чего мы в действительности хотим (Ларошфуко).

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

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
24 июля 2019
Shebang в Оболочки Linux Bash
Если вы изучаете скрипты Bash, читая чужой код, вы могли заметить, что первая строка скриптов начинается с символов #! и пути к интерпретатору Bash.

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

 

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

#!interpreter [arguments]

 

  • Директива должна быть первой строкой в ​​скрипте.
  • Директива должна начинаться с Shebang #!
  • Пробел после символов Shebang не является обязательным.
  • Интерпретатор – это полный путь к двоичному файлу (например /bin/sh, /bin/bash).
  • Аргументы интерпретатора являются необязательными.

Примеры:

  • #!/bin/bash- Использует bash для разбора файла.
  • #!/usr/bin/env perl- Использует команду env, чтобы найти путь к исполняемому файлу perl.
  • #!/usr/bin/python – Выполняет файл, используя двоичный файл python.

 

Если 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.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 148

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close