Что такое shebang (#! / Bin / bash). [dубликат]

На этот вопрос уже есть ответ: Что такое «#!» в файле сценария? [duplicate] 1 ответ Почему Python в Linux требует строки #! / usr / bin / python? 7 ответов

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

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

1
задан 18 May 2018 в 13:44

4 ответа

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

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

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

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

0
ответ дан 17 July 2018 в 14:00

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

#!langpath args

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

exec langpath args path-to-the-script.

. Эти способы, обычно:

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

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

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

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

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

0
ответ дан 20 July 2018 в 14:04

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

#!langpath args

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

exec langpath args path-to-the-script.

. Эти способы, обычно:

langpath определяет язык, который будет использоваться, ans должен быть путь исполняемого интерпретатора языка программирования (например: '/ usr / bin / python'), язык должен принимать файл сценария в качестве аргумента, язык должен игнорировать директиву #!... в качестве комментария
2
ответ дан 20 July 2018 в 14:04
  • 1
    Большое вам спасибо, это действительно помогло мне понять концепцию использования shebang. – Ashish Kumar Thakur 22 June 2018 в 11:03
  • 2
    @AshishKumarThakur, я рад, что это поможет. – JJoao 23 June 2018 в 02:06

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

Похожие вопросы: