Что такое шебанг ( #!/ Bin/bash).

Почему мы используем shebang в начале файла сценария оболочки. скрипт будет работать без него

Я попытался запустить его без shebang в сценарии оболочки, но он не запустился.

2 ответа

Когда файл script начинается с директивы Шебанга

#!langpath args

и имеет установленные разрешения на выполнение, Unix "заменит его" на

exec langpath args path-to-the-script.

Это способы, как правило:

  • langpath определяет используемый язык, а ans должен быть путем исполняемого интерпретатора языка (программирования) (например: '/usr/bin/python')
  • язык должен принять файл сценария в качестве аргумента
  • язык должен игнорировать #!... директива в качестве комментария

Различные оболочки поддерживают разные функции. Чтобы дать эффективный совет, ShellCheck необходимо знать, на какой оболочке будет работать ваш скрипт. Вы получите различное количество предупреждений о разных вещах в зависимости от вашей целевой оболочки.

ShellCheck обычно определяет вашу целевую оболочку по шебангу (например, #!/bin/sh как первая строка). Оболочка также может быть указана из CLI с -sнапример, shellcheck -s sh file,

Если вы не укажете ни Шебанг, ни -sShellCheck выдает это сообщение и переходит по умолчанию (bash).

Обратите внимание, что эту ошибку нельзя игнорировать директивой. Это не предложение по улучшению вашего скрипта, а предупреждение о том, что ShellCheck не хватает информации, которая должна быть полезной.

Другие вопросы по тегам