Spec-Zone.ru › Bash

Поиск и выполнение команд

​ ​

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

  1. Если имя команды не содержит косых черт, оболочка пытается найти эту команду. Если существует функция оболочки с таким именем, она вызывается, как описано в разделе Функции оболочки.
  2. Если имя не соответствует функции, оболочка ищет его в списке встроенных команд оболочки. Если совпадение найдено, вызывается эта встроенная команда.
  3. Если имя не является ни функцией оболочки, ни встроенной командой и не содержит косых черт, Bash ищет в каждом элементе $PATH каталог, содержащий исполняемый файл с таким именем. Bash использует хеш-таблицу для хранения полных имён путей к исполняемым файлам, чтобы избежать повторного поиска PATH (см. описание hash в разделе Встроенные команды оболочки Bourne). Bash выполняет полный поиск в каталогах из $PATH, только если команда не найдена в хеш-таблице. Если поиск не удаётся, оболочка ищет определённую функцию оболочки с именем command_not_found_handle. Если такая функция существует, она вызывается в отдельном окружении выполнения с исходной командой и аргументами исходной команды в качестве аргументов, а статус завершения функции становится статусом завершения этой подоболочки. Если эта функция не определена, оболочка выводит сообщение об ошибке и возвращает статус завершения 127.
  4. Если поиск выполнен успешно или если имя команды содержит одну или несколько косых черт, оболочка выполняет указанную программу в отдельном окружении выполнения. Аргумент 0 устанавливается равным заданному имени, а остальные аргументы команды — переданным аргументам, если они есть.
  5. Если выполнение завершается неудачей, поскольку файл имеет неподдерживаемый формат, и этот файл не является каталогом, предполагается, что это сценарий оболочки — файл, содержащий команды оболочки, — и оболочка выполняет его, как описано в разделе Сценарии оболочки.
  6. Если команда не была запущена асинхронно, оболочка ожидает её завершения и получает её статус завершения.

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-Search-and-Execution.html

Spec-Zone.ru

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