Spec-Zone.ru › Bash

Сценарии оболочки

Сценарий оболочки — это текстовый файл, содержащий команды оболочки. Когда такой файл используется в качестве первого аргумента без опций при вызове Bash, и не задана опция -c или -s (см. Вызов Bash), Bash читает и выполняет команды из файла, а затем завершается. Этот режим работы создаёт неинтерактивную оболочку. Оболочка сначала ищет файл в текущем каталоге, а затем в каталогах в $PATH , если он не найден там.

Когда Bash выполняет сценарий оболочки, он устанавливает специальный параметр 0 в имя файла, а не имя оболочки, а позиционные параметры устанавливаются в оставшиеся аргументы, если они заданы. Если дополнительных аргументов нет, позиционные параметры сбрасываются.

Сценарий оболочки можно сделать исполняемым, используя команду chmod для включения бита выполнения. Когда Bash находит такой файл при поиске команды в $PATH, он создаёт новый экземпляр себя для его выполнения. Другими словами, выполнение

filename arguments

эквивалентно выполнению

bash filename arguments

если filename является исполняемым сценарием оболочки. Эта дочерняя оболочка повторно инициализирует себя, так что эффект такой, как будто была вызвана новая оболочка для интерпретации сценария, за исключением того, что местоположения команд, запомненные родительской (см. описание hash в Встроенные команды Bourne Shell) сохраняются дочерней.

Большинство версий Unix включают это в механизм выполнения команд операционной системы. Если первая строка сценария начинается с двух символов ‘#!’, то остальная часть строки определяет интерпретатор для программы и, в зависимости от операционной системы, одну или несколько дополнительных аргументов для этого интерпретатора. Таким образом, вы можете указать Bash, awk, Perl или какой-либо другой интерпретатор и написать остальную часть файла сценария на этом языке.

Аргументы интерпретатора состоят из одного или нескольких необязательных аргументов, следующих за именем интерпретатора в первой строке файла сценария, за которым следует имя файла сценария, за которым следуют остальные аргументы, переданные сценарию. Подробности о том, как строка интерпретатора разбивается на имя интерпретатора и набор аргументов, различаются в разных системах. Bash выполнит это действие на операционных системах, которые не обрабатывают это самостоятельно. Обратите внимание, что некоторые старые версии Unix ограничивают имя интерпретатора и один аргумент максимум 32 символами, поэтому нельзя считать портативным использование более одного аргумента.

Сценарии Bash часто начинаются с #! /bin/bash (при условии, что Bash был установлен в /bin), так как это гарантирует, что Bash будет использоваться для интерпретации сценария, даже если он выполняется под другой оболочкой. Часто используется env для поиска bash, даже если он установлен в другом каталоге: #!/usr/bin/env bash найдёт первое вхождение bash в $PATH.

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Shell-Scripts.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API