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