Spec-Zone.ru › Bash

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

​

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

Bash пытается определить, является ли файл текстовым или двоичным, и не выполняет файлы, которые считает двоичными.

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

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

filename arguments

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

bash filename arguments

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

Операционная система GNU и большинство версий 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