
К9-12В. Вопросы и ответы к ГОСам 2013 / Операционные системы / 05. Обзор возможностей командных процессоров (оболочек) ОС
.docx05. Обзор возможностей командных процессоров (оболочек) ОС.
Основы Shell:
Shell, с одной стороны, представляет собой интерпретатор команд, который, как правило, хранится в
каталоге:
* /usr/bin/ksh Korn Shell
* /usr/bin/bash Bash Shell
* /usr/bin/csh C Shell
* /usr/bin/sh Posix Shell
* /usr/old/bin/sh Borne shell
...с другой стороны, shell - это язык программирования, позволяющий выполнять любые действия,
которые позволяет выполнять язык C. Базовым shell'ом с минимальными возможностями является borne-shell. Все остальные оболочки включают возможности borne-shell'а
|
|
Стандартный ввод - поток номер 0 (stdin) зарезервирован для чтения команд пользователя или входных данных.
Стандартный вывод - поток номер 1 (stdout) зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых.
Стандартный вывод ошибок - поток номер 2 (stderr) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.
Основные функции оболочек в UNIX:
• Исполнение команд. Находит команду и выполняет для нее соответствующую
программу, подставляет значения переменных.
• Установка среды.
• Задание переменных и замена переменных
• Подстановка команд (установка псевдонимов команд - с помощью команд alias/unalias).
• Генерация имён файлов. Формирует имена файлов, используя символы генерации
• Выполняет перенаправление ввода-вывода
• Выполняет подстановку результатов выполнения команд
• Реализует конвейеры
• Интерпретация программ. Поддерживает интерпретируемый программный интерфейс,
включая проверки, ветвления и циклы.
• Буферирование команд (кроме оболочки Borne-Shell). Shell сохраняет команды, которые вводит пользователь, в некотором файле предыстории. History выводит на экран последние 16 команд. Таким образом осуществляется буферирование команд с возможностью повторного ввода, а так же редактирование командной строки с помощью редактора VI (для этого должна быть установлена переменная среды EDITOR=vi, установка командой export EDITOR)
Рассмотрим реализацию некоторых из этих возможностей подробнее:
1) Команды в Shell
Различают 2 типа команд
• Внутренние команды shell. Примеры: set, while, is , for
• Команды, которые интерпретируются shell. Примеры: ls, more, pwd. Команды UNIX
находятся с помощью переменной среды PATH.
Команды UNIX могут иметь те же имена, что и встроенные команды shell'а: в этом случае для доступа
к командам UNIX пользователь должен явно указывать полное маршрутное имя команды. Как
правило, все команды в системе UNIX хранятся в 4-х основных каталогах:
/sbin
/user/bin
/usr/local/bin
/usr/contrib/bin
Для поиска нужной команды в системе предусмотрена команда:
whereis <имя команды>
Эта команда выдаёт на экран полное имя каталога, содержащего указанную команду
Установка псевдонимов команд:
Допускается установка/снятие псевдонимов команд командами alias/unalias. Формат
команды:
alias <имя>=<строка>
Пример:
alias dir=ls
2) Среда пользователя
Среда пользователя описывает сеанс работы пользователя с системой для программ, которые запускает пользователь на выполнение.
• маршрутное имя начального кат-га пользователя
Среда пользователя содержит:
• под каким именем вошел пользователь
• где shell будет искать команды и т.д.
Среда пользователя может быть отображена на экран командой env
3) Стартовые файлы shell:
При входе в систему для формирования среды и выполнения других необходимых действий
выполняются специальные процедуры, которые называются стартовыми процедурами shell.
.profile
Этот файл позволяет пользователю определить или настроить переменные среды, характеристики
терминала, а так же выполнить любое приложение при входе в системы.
Если .profile содержит команду
exec <приложение>
то пользователь не получит приглашение со стороны shell'а, а по завершении указанного приложения
выйдет из системы.
Общесистемный стартовый файл (выполняется для всех пользователей, работающих с Borne, Korn
или Posix-shell'ом):
/etc/profile
Содержимое общесистемного стартового файла формируется системных администратором и
обычному пользователю не разрешается менять его содержимое
На рисунке представлены функции процедур, выполняющихся при входе пользователя в систему.
Выполнение их в совокупности называется авторизацией.
1. Getty - выводит на экран содержимое файла /etc/issue. Выдаёт приглашение login. Запускает
процесс login.
пользователя. Авторизация UNIX включает 3
этапа:
2. Login - определяет допустимость введённого имени и пароля (и проверяет их на соответствие в
файле etc/passwd). Если запись есть, делает текущим начальный каталог пользователя и
запускает shell
3. Shell - выполняет /etc/profile (общесистемный командный файл), а затем .profile
(настраивает среду конкретного пользователя, содержится в домашнем каталоге пользователя) и
выводит приглашение shell. Таким образом выполняется настройка параметров среды
пользователя.
4) Хранимые переменные в shell
В UNIX различают несколько видов переменных:
• локальные переменные
• программных код shell
• переменные среды
В Shell встроены две области переменных:
• область локальных переменных;
• среда.
Установка переменных shell: Для установки переменной необходимо указать имя переменной и
значение (<имя>=<значение>). Особенности задания переменных:
• при написании не допускается пробелов
• имена переменных начинаются с букв латинского алфавита и могут содержать буквы,
цифры и символы подчёркивания, ограничения на длину имён нет.
Shell хранит переменные или в локальной области пользователя, или в среде. Для передачи
переменных из локальной области в среду необходимо выполнить команду export. Пример:
EDITOR=vi
export EDITOR