14. Командный интерпретатор shell - назначение, роль в системе, виды shell-ов (некоторые).
Shell (оболочка)
Оболочки (командные интерпретаторы, процессоры, shells) представляют собой промежуточные уровень между пользователем и ОС. Они анализируют командную строку, выполняют преобразования аргументов команд, находя и выполняя команды.
Shell это обычная прикладная программа. Она не является частью ядра, и поэтому может быть заменена на любую другую, например, на игрушку или текстовый редактор. Из оболочки может быть запущена другая оболочка (или такая же), что дает дополнительные возможности.
Виды shell: sh, csh, ksh, zsh, tcsh, ash и другие.
Bourne Shell
Сценарий (скрипт) оболочки представляет собой текстовый файл, который задает выполнение последовательности действий. Сценарий может содержать любую последовательность команд (как внутренних команд оболочки, так и внешних команд UNIX, с аргументами или без них), вызовов программ или других написанных ранее сценариев. Про Shell можно сказать, что это и программа и язык программирования. Работа пользователя в командной сроке ничем не отличается от выполнения длинного запутанного скрипта. Механизм работы скрипта: при запуске скрипта из командной строки запускается копия интерпретатора, для которого вводом служит скрипт (как-будто пользователь сам вводил эти команды). Для запуска по имени, файл скрипта должнен иметь атрибут X (eXecutable - исполняемый).
Разновидности:
- sh — оригинальный шелл Борна; dash, bash, zsh — другие современные клоны Bourne shell (расположены по возрастанию функциональности).
- ksh (KornShell) — клон шелла Борна, разработанный Дэвидом Корном из AT&T Labs. Синтаксис совместим, функциональность интерактивности увеличена[1].
- pdksh (public domain ksh) — открытая (почти целиком является общественным достоянием[2]) реализация ksh.
- bash (bourne again shell) (эмуляция совместимости POSIX[1]) расширенная Борном свободная (разработанная в рамках проекта GNU) оболочка ash, сходная с pdksh. Стандартная оболочка в Linux.
- C shell — (несовместима с POSIX shell) оболочка, с синтаксисом на основе Си, созданная Университетом Беркли в рамках проекта по реализации BSD Unix.
- csh (C-Shell) — оболочка из состава дистрибутива BSD, имеет Си-образный синтаксис и не является POSIX-совместимой. Впервые введены возможности управления заданиями и произведены другие улучшения.
- tcsh (csh) — реализация csh с интерактивными возможностями, не уступающими bash[1]. Удобна для интерактивной работы. Совместима с csh.
- ash (Almquist shell, оболочка Альмквиста), BusyBox — современные микро-версии, предназначенные для встраиваемых систем, а также используемые в мини-дистрибутивах.
- xsh (Xiki shell, от executable wiki) — новая командная оболочка, совмещающая командный и графический режимы работы
sh является удобным и часто используемым интерпретируемым языком программирования. Он содержит стандартные конструкции для циклов, ветвления, объявления функций и т. п. Данный язык часто используется в UNIX-подобных системах при создании различных сценариев (скриптов) работы, в частности, сценариев автоматического конфигурирования исходных кодов программ перед их компиляцией. Отличительная особенность языка sh — многие операции, которые в традиционных языках программирования являются встроенными, выполняются с помощью вызова внешних программ.