Командная оболочка — это обычный процесс в операционной системе UNIX. Когда пользователь вводит команду (например, по нажатию Enter), командная оболочка выполняет следующие действия:
1. анализ команды: выделение имени, параметров и аргументов;
2. если это сокращение (alias), то оно раскрывается и анализ команды продолжается;
3. если это встроенная команда, для неё вызывается функция-обработчик;
4. если это внешняя команда:
a. производится поиск программы с соответствующим именем;
b. создаётся дочерний процесс оболочки (системный вызов fork);
c. в дочернем процессе запускается необходимая команда с расшифрованными параметрами и аргументами (системный вызов exec);
d. оболочка контролирует выполнение дочернего процесса, передаёт ему сигналы и ввод пользователя, ожидает его завершения (системный вызов wait);
5. результаты работы возвращаются пользователю, отображается приглашение — он может вводить следующую команду.
Рисунок 2.3. Запуск команды оболочкой