Bash
Скрипт shebang
Поиск…
Синтаксис
Используйте
/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, используют этот метод для запуска более длинных скриптов, находящихся в файле на диске.