При интерактивной работе с операционной системой пользователь постоянно сталкивается с необходимостью отдавать ей команды. В UNIX эту работу выполняет программа, которая называется командным процессором (shell). Иногда командный процессор называют шеллом или оболочкой, или интерпретатором команд (последнее неточно, потому что круг задач командного процессора шире, чем интерпретация команд).
Shell действует как посредник между вами и ядром операционной системы. Ядро – это часть операционной системы, которая всегда находится в памяти компьютера, это программа. Командный процессор преобразует ваши команды в инструкции для операционной системы, а операционная система превращает их в инструкции для аппаратных средств компьютера. По сути, именно оболочка придает определенную “персонализацию” системам UNIX.
Командный процессор выполняет в системе следующие задачи:
- интерпретация команд пользователя, в том числе разбор командной строки;
- запуск программ;
- организация перенаправлений потоков между процессами;
- интерпретация языка скриптов и их выполнение;
- управление заданиями;
- интерпретация шаблонов имен файлов;
- подстановка имен файлов в командную строку.
Кроме того, shell является мощным языком программирования.
Любая команда, являющаяся отдельной программой, т.е. не встроенной в интерпретатор, будет выполняться одинаково, независимо от shell'a. Например, если вы хотите что–то напечатать, команда печати всегда работает одинаково.
Некоторые команды встроены в shell, т.е. они являются частью программы оболочки и, как следствие, могут выполняться по-разному в зависимости от оболочки, в которой они запускаются. Есть три вида команд, встроенных в shell:
- общие команды запускаются несколько быстрее, так как они являются частью оболочки;
- команды адаптации позволяют адаптировать оболочку;
- команды программирования образуют язык программирования оболочки.
При смене shell'a вы не заметите никакой разницы между общими командами, которые встроены просто для повышения быстродействия. Однако команды адаптации и программирования изменяются.
Примером общих команд, встроенных в оболочку, служат команды cd, echo, pwd, login, umask.
Адаптация включает в себя создание новых команд или новых имен для старых команд и привлечение новых возможностей. Примером общепринятой адаптации служит изменение стимула (или приглашения системы).
Можно персонализировать свою работу, привлекая удобные возможности, встроенные в различные оболочки. Почти все такие возможности связаны с этапом преобразования команды. Большинство различий между оболочками кроется в том, как они адаптированы.
Примером команд адаптации могут служить следующие команды:
- alias – создает новое имя для команды;
- export – создает переменную среды;
- set – включает и выключает некоторые опции shell'a;