Spec-Zone.ru › Bash

Среда выполнения команд

​

У оболочки есть среда выполнения, которая состоит из следующего:

  • Открытые файлы, унаследованные оболочкой при запуске, с учётом изменений, внесённых перенаправлениями, переданными встроенной команде exec.
  • Текущий рабочий каталог, заданный с помощью cd, pushd или popd либо унаследованный оболочкой при запуске.
  • Маска режима создания файлов, заданная с помощью umask либо унаследованная от родительской оболочки.
  • Текущие ловушки, заданные с помощью trap.
  • Параметры оболочки, заданные присваиванием переменных или с помощью set либо унаследованные от родительской оболочки из окружения.
  • Функции оболочки, определённые во время выполнения или унаследованные от родительской оболочки из окружения.
  • Параметры, включённые при запуске (по умолчанию или с помощью аргументов командной строки) либо с помощью set.
  • Параметры, включённые с помощью shopt (см. Встроенная команда Shopt).
  • Псевдонимы оболочки, определённые с помощью alias (см. Псевдонимы).
  • Различные ID процессов, в том числе фоновых заданий (см. Списки команд), значение $$ и значение $PPID.

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

  • Открытые файлы оболочки, а также любые изменения и дополнения, указанные в перенаправлениях для команды.
  • Текущий рабочий каталог.
  • Маска режима создания файлов.
  • Переменные и функции оболочки, отмеченные для экспорта, а также переменные, экспортируемые для команды и передаваемые в окружении (см. Окружение).
  • Ловушки, перехваченные оболочкой, сбрасываются до значений, унаследованных от родительской оболочки, а ловушки, игнорируемые оболочкой, продолжают игнорироваться.

Команда, запущенная в этой отдельной среде, не может повлиять на среду выполнения оболочки.

Подоболочка — это копия процесса оболочки.

Подстановка команды, команды, сгруппированные в скобках, и асинхронные команды запускаются в среде подоболочки, которая является копией среды оболочки, за исключением того, что ловушки, перехваченные оболочкой, сбрасываются до значений, унаследованных оболочкой от родительской при запуске. Встроенные команды, вызванные как часть конвейера, за исключением, возможно, последнего элемента — в зависимости от значения параметра оболочки lastpipe (см. Встроенная команда Shopt), — также выполняются в среде подоболочки. Изменения, внесённые в среду подоболочки, не могут повлиять на среду выполнения оболочки.

Когда оболочка работает в режиме POSIX, подоболочки, создаваемые для выполнения подстановок команд, наследуют значение параметра -e от родительской оболочки. Вне режима POSIX Bash сбрасывает параметр -e в таких подоболочках. Описание параметра оболочки inherit_errexit (см. Встроенные команды Bash) содержит сведения о том, как управлять этим поведением вне режима POSIX.

Если после команды стоит ‘&’ и управление заданиями не активно, стандартным вводом команды по умолчанию является пустой файл /dev/null. В противном случае вызванная команда наследует файловые дескрипторы вызвавшей её оболочки с учётом перенаправлений.

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/Command-Execution-Environment.html

Spec-Zone.ru

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