Руководство по Bash для начинающих
Назад Глава 1: Командная оболочка и скрипты Bash Вперед

Исполнение команд

Общие положения

Bash определяет тип программы, которая должна быть выполнена. Обычно программами являются системные команды, которые есть в вашей системе в откомпилированном виде. Когда выполняется такая программа, создается новый процесс, поскольку Bash создает точную копию самого себя. Этот порожденный процесс использует точно такие же настройки среды, что и родительский процесс, отличается только номер идентификатора процесса ID. Эта процедура называется forking или ветвление процессов.

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

Таким образом, с помощью механизма fork-and-exec (порождение процесса и его выполнение) происходит переключение исполнения от старой команды к новой, причем настройка среды, в которой исполняется новая программа, остается такой же самой, в том числе остается такой же конфигурация устройств ввода и вывода, переменных среды и приоритет. Этот механизм используется при создания любых процессов UNIX, причем это также относится и к операционной системе Linux. Даже для первого процесса init, имеющего ID, равный 1, во время загрузки системы в так называемой процедуре начальной загрузки (процедура bootstrapping) происходит порождение новых процессов и их выполнение.

Встроенные команды командной оболочки

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

В Bash поддерживается три типа встроенных команд:

Большинство этих встроенных команд будут рассмотрены в следующих главах. Описание тех команд, которые рассматриваться не будут, можно посмотреть в документации.

Выполнение программ из скрипта

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

Пока подоболочка будет обрабатывать каждую строку скрипта, родительская оболочка будет ожидать завершение дочернего процесса. Как только все сроки скрипта shell будут прочитаны, подоболочка завершит работу. Родительская оболочка возобновит работу и выдаст новую строку приглашение.


Предыдущий раздел: Оглавление Следующий раздел:
Преимущества Bash   Составляющие компоненты