Поиск…


Синтаксис

  • Используйте /bin/bash в качестве интерпретатора bash:

    #! / Bin / Баш

  • Найдите интерпретатор bash в PATH среды PATH с помощью env :

    #! / usr / bin / env bash

замечания

Распространенная ошибка заключается в попытке выполнить Windows-файлы с отформатированными файлами \r\n системах UNIX / Linux, в этом случае используемый интерпретатор скриптов в shebang:

/bin/bash\r

И не замечается, но его трудно понять.

Прямая shebang

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

#!/bin/bash

Путь bash в shebang разрешен и используется только в том случае, если скрипт запускается следующим образом:

./script.sh

Сценарий должен иметь разрешение на выполнение.

Shebang игнорируется, когда интерпретатор bash явно указывается для выполнения скрипта:

bash script.sh

Env shebang

Чтобы выполнить файл сценария с исполняемым файлом bash найденным в PATH среды PATH с помощью исполняемого env , первая строка файла сценария должна указывать абсолютный путь к исполняемому файлу env с аргументом bash :

#!/usr/bin/env bash

Путь env в shebang разрешен и используется только в том случае, если скрипт запускается следующим образом:

script.sh

Сценарий должен иметь разрешение на выполнение.

Shebang игнорируется, когда интерпретатор bash явно указывается для выполнения скрипта:

bash script.sh

Другие шебанги

Ядро знает о двух типах программ. Бинарная программа идентифицируется заголовком ELF ( E xtenable L oadable F ormat), который обычно создается компилятором. Второй - это скрипты любого типа.

Если файл начинается в самой первой строке с последовательностью #! то следующей строкой должен быть путь к интерпретатору. Если ядро ​​читает эту строку, оно вызывает интерпретатор, названный этим именем пути, и дает все следующие слова в этой строке в качестве аргументов интерпретатору. Если нет файла с именем «something» или «wrong»:

#!/bin/bash something wrong
echo "This line never gets printed"

bash пытается выполнить свой аргумент «что-то неправильно», которого не существует. Также добавляется имя файла сценария. Чтобы увидеть это, используйте эхо- шебанг:

#"/bin/echo something wrong 
# and now call this script named "thisscript" like so:
# thisscript one two
# the output will be:
something wrong ./thisscript one two

Некоторые программы, такие как awk, используют этот метод для запуска более длинных скриптов, находящихся в файле на диске.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow