Поиск и выполнение команд
После того как команда разбита на слова, если в результате получается простая команда и необязательный список аргументов, оболочка выполняет следующие действия.
- Если имя команды не содержит косых черт, оболочка пытается найти эту команду. Если существует функция оболочки с таким именем, она вызывается, как описано в разделе Функции оболочки.
- Если имя не соответствует функции, оболочка ищет его в списке встроенных команд оболочки. Если совпадение найдено, вызывается эта встроенная команда.
- Если имя не является ни функцией оболочки, ни встроенной командой и не содержит косых черт, Bash ищет в каждом элементе
$PATHкаталог, содержащий исполняемый файл с таким именем. Bash использует хеш-таблицу для хранения полных имён путей к исполняемым файлам, чтобы избежать повторного поискаPATH(см. описаниеhashв разделе Встроенные команды оболочки Bourne). Bash выполняет полный поиск в каталогах из$PATH, только если команда не найдена в хеш-таблице. Если поиск не удаётся, оболочка ищет определённую функцию оболочки с именемcommand_not_found_handle. Если такая функция существует, она вызывается в отдельном окружении выполнения с исходной командой и аргументами исходной команды в качестве аргументов, а статус завершения функции становится статусом завершения этой подоболочки. Если эта функция не определена, оболочка выводит сообщение об ошибке и возвращает статус завершения 127. - Если поиск выполнен успешно или если имя команды содержит одну или несколько косых черт, оболочка выполняет указанную программу в отдельном окружении выполнения. Аргумент 0 устанавливается равным заданному имени, а остальные аргументы команды — переданным аргументам, если они есть.
- Если выполнение завершается неудачей, поскольку файл имеет неподдерживаемый формат, и этот файл не является каталогом, предполагается, что это сценарий оболочки — файл, содержащий команды оболочки, — и оболочка выполняет его, как описано в разделе Сценарии оболочки.
- Если команда не была запущена асинхронно, оболочка ожидает её завершения и получает её статус завершения.
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