Оболочка Linux — это специальная программа, разработанная для чтения набранных пользователем команд и выполнения соответствующих программ в ответ на эти команды. Иногда такую программу называют командным интерпретатором.
Оболочкой входа в систему Линукс обозначают процесс, создаваемый для запуска оболочки при первом входе пользователя в систему.
В некоторых операционных системах командный интерпретатор является составной частью ядра, но в системах UNIX оболочка представляет собой пользовательский процесс. Существует множество различных оболочек, и несколько различных пользователей (или один пользователь) могут одновременно работать на одном компьютере с несколькими разными оболочками. Со временем выделились основные оболочки.
- Bourne shell (sh). Эта оболочка, написанная Стивом Борном (Steve Bourne), является старейшей из широко используемых оболочек. Она была стандартной оболочкой для Seventh Edition UNIX. Bourne shell характеризуется множеством особенностей, актуальных для всех оболочек: перенаправление ввода-вывода, организация конвейеров, генерация имен файлов (подстановка), использование переменных, работа с переменными среды, подстановка команд, фоновое выполнение команд и функций. Все последующие реализации UNIX включали Bourne shell в дополнение к любым другим оболочкам, которые они могли предоставлять.
- С shell (csh). Была написана Биллом Джоем (Bill Joy) из Калифорнийского университета в Беркли. Такое имя она получила из-за схожести многих конструкций управления выполнением этой оболочки с конструкциями языка программирования С. Оболочка С shell предоставляет ряд полезных интерактивных средств, недоступных в Bourne shell, включая историю команд, управление заданиями и использование псевдонимов. Оболочка С shell не имеет обратной совместимости с Bourne shell. Хотя стандартной интерактивной оболочкой на BSD была С shell, сценарии оболочки (которые вскоре будут рассмотрены) обычно создавались для Bourne shell, дабы сохранялась их портируемость между всеми реализациями UNIX.
- Korn shell (ksh). Оболочка была написана в качестве преемника Bourne shell Дэвидом Корном (David Korn) из AT&T Bell Laboratories. Кроме поддержки обратной совместимости с Bourne shell, в нее были включены интерактивные средства, подобные предоставляемым оболочкой С shell.
- Bourne again shell (bash). Была разработана в рамках проекта GNU в качестве усовершенствованной реализации Bourne shell. Она предоставляет интерактивные средства, подобные тем, что доступны при работе с оболочками С и Korn. Основными создателями bash являются Брайан Фокс (Brian Fox) и Чет Рэми (Chet Ramey). Bash, наверное, наиболее популярная оболочка Linux. (Фактически в Linux Bourne shell, sh, предоставляется посредством имеющейся в bash наиболее приближенной к оригиналу эмуляции оболочки
sh
.)
В POSIX.2-1992 определяется стандарт для оболочки, которая была основана на актуальной в ту пору версии оболочки Korn. В наши дни стандарту POSIX соответствуют обе оболочки: и
Korn shell
иbash
, но при этом они предоставляют несколько расширений стандарта и отличаются друг от друга многими из этих расширений.
Оболочки разработаны не только для использования в интерактивном режиме, но и для выполнения в режиме интерпретации сценариев оболочки. Эти сценарии представляют собой текстовые файлы, содержащие команды оболочки. Для этого каждая из оболочек имеет элементы, обычно присущие языкам программирования: переменные, циклы, условные инструкции, команды ввода-вывода и функции.
Все оболочки выполняют схожие задачи, хотя и имеют отличающийся синтаксис. При описании в этой книге операций оболочки, как правило, будет подразумеваться, что таким образом работают все оболочки, если отдельно не встретится ссылка на операцию конкретной оболочки. В большинстве примеров, требующих применения оболочки, используется bash, но, пока не будет утверждаться обратное, считайте, что эти примеры работают точно так же и на других оболочках Bourne-типа.