Что такое шебанг ( #!/ 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
,
Если вы не укажете ни Шебанг, ни -s
ShellCheck выдает это сообщение и переходит по умолчанию (bash).
Обратите внимание, что эту ошибку нельзя игнорировать директивой. Это не предложение по улучшению вашего скрипта, а предупреждение о том, что ShellCheck не хватает информации, которая должна быть полезной.