Книга: Операционная система UNIX

Командный интерпретатор shell

Командный интерпретатор shell

Все современные системы UNIX поставляются по крайней мере с тремя командными интерпретаторами: Bourne shell (/bin/sh), С shell (/bin/csh) и Korn shell (/bin/ksh). Существует еще несколько интерпретаторов, например Bourne-Again shell (bash), со сходными функциями.

Командный интерпретатор занимает важное место в операционной системе UNIX, прежде всего, благодаря следующим обстоятельствам:

1. Первая программа, с которой по существу начинается работа пользователя, — shell. В UNIX реализуется следующий сценарий работы в системе (рис. 1.8):

 • При включении терминала активизируется процесс getty(1M), который является сервером терминального доступа и запускает программу login(1)[12], которая, в свою очередь, запрашивает у пользователя имя и пароль.

 • Если пользователь зарегистрирован в системе и ввел правильный пароль, login(1) запускает программу, указанную в последнем поле записи пользователя в файле /etc/passwd. В принципе это может быть любая программа, но в нашем случае — это командный интерпретатор shell.

 • Shell выполняет соответствующий командный файл инициализации, и выдает на терминал пользователя приглашение. С этого момента пользователь может вводить команды.

 • Shell считывает ввод пользователя, производит синтаксический анализ введенной строки, подстановку шаблонов и выполняет действие, предписанное пользователем (это может быть запуск программы, выполнение внутренней функции интерпретатора) или сообщает об ошибке, если программа или функция не найдены.

• По окончании работы пользователь завершает работу с интерпретатором, вводя команду exit, и выходит из системы.


Рис. 1.8. Процессы, обеспечивающие вход пользователя в систему

2. Командный интерпретатор является удобным средством программирования. Синтаксис языка различных командных интерпретаторов несколько отличается, в качестве базового мы рассмотрим командный интерпретатор Bourne. С помощью shell вы можете создавать сложные программы, конструируя их, как из кирпичиков, из существующих утилит UNIX. Программы на языке shell часто называют скриптами или сценариями (script). Интерпретатор считывает строки из файла- скрипта и выполняет их, как если бы они были введены пользователем в командной строке.

3. Как уже упоминалось, при входе пользователя в систему запускается его инициализационный скрипт, выполняющий несколько функций: установку пути поиска программ, инициализацию терминала, определение расположения почтового ящика. Помимо этого может быть выполнен целый ряд полезных действий, — например, установка приглашения. Скорее всего вам придется "покопаться" в этом скрипте, по крайней мере, чтобы добавить необходимые пути поиска. Инициализационный скрипт находится в домашнем каталоге пользователя.

Для разных командных интерпретаторов используются различные скрипты инициализации:

Командный интерпретатор Скрипт инициализации
Bourne shell (sh) .profile
С shell (csh) .login и .cshrc
Korn shell (ksh) .profile и .kshrc
Bourne-Again shell (bash) .profile и .bashrc

Скрипты .profile и .login выполняются при первом входе в систему.

Скрипты .cshrc, .kshrc и .bashrc выполняются при каждом запуске интерпретатора.

4. Наконец, основная инициализация операционной системы происходит в результате выполнения скриптов shell. Если вам понадобится модифицировать процесс инициализации (например, добавить новый системный сервис), то придется заглянуть в эти скрипты.

Оглавление книги


Генерация: 1.207. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз