Введение

Интерпретатор командной строки для операционной системы Unix.

[[File:Tcsh ejecutándose en escritorio Mac OSX. png|thumb|300px|right|Окна оболочек tcsh и sh на Mac OS X Leopard]]

Пользователи обычно взаимодействуют с Unix-оболочкой через эмулятор терминала, однако прямое взаимодействие через последовательные аппаратные соединения или Secure Shell распространено для серверных систем. Все Unix-оболочки предоставляют подстановку шаблонов имен файлов, конвейеры, "here documents", подстановку команд, переменные и управляющие структуры для проверки условий и итераций.

Концепция

Как правило, оболочка — это программа, которая запускает другие программы в ответ на текстовые команды. Более сложная оболочка также может изменять окружение, в котором выполняются другие программы, передавая именованные переменные, список параметров или источник ввода. В Unix-подобных операционных системах пользователи обычно имеют множество интерпретаторов командной строки на выбор для интерактивных сессий. Когда пользователь входит в систему в интерактивном режиме, программа оболочки автоматически запускается на время сеанса. Тип оболочки, который может быть настроен для каждого пользователя, обычно хранится в профиле пользователя, например, в локальном файле или в распределенной системе конфигурации, такой как NIS или LDAP; однако пользователь может запустить любую другую доступную оболочку в интерактивном режиме. На операционных системах с графическим интерфейсом, таких как macOS и настольные дистрибутивы Linux, некоторые пользователи могут никогда не использовать оболочку напрямую. В системах Unix оболочка исторически являлась языком реализации системных стартовых скриптов, включая программу, которая запускает графическую систему, настраивает сеть и выполняет множество других важных функций. Однако некоторые производители систем заменили традиционную систему запуска на основе оболочки (init) другими подходами, такими как systemd.

Ранние раковины

Первой оболочкой Unix была оболочка Томпсона, sh, написанная Кеном Томпсоном в лабораториях Bell и распространявшаяся с версиями 1 по 6 Unix с 1971 по 1975 год. Хотя по современным стандартам она была примитивной, она представила многие из основных функций, общих для всех последующих оболочек Unix, включая перенаправление вывода (pipes), простые управляющие структуры с использованием `if` и `goto`, а также подстановку шаблонов имен файлов. Несмотря на то, что она больше не используется, она всё ещё доступна как часть некоторых старых систем UNIX. Она была создана по образцу оболочки Multics, разработанной в 1965 году американским инженером-программистом Глендой Шредер. Оболочка Multics Шредер, в свою очередь, была смоделирована по программе RUNCOM, продемонстрированной Луи Пузином команде Multics. Суффикс "rc" в некоторых конфигурационных файлах Unix (например, ".vimrc") – это пережиток происхождения оболочек Unix от RUNCOM. Оболочка PWB или Mashey shell, sh, являлась расширенной версией оболочки Томпсона, дополненной Джоном Машеем и другими, и распространялась вместе с Programmer's Workbench UNIX примерно в 1975–1977 годах. Она была ориентирована на практическое применение программирования в оболочке, особенно в крупных вычислительных центрах с общим доступом. В неё были добавлены переменные оболочки (предшественники переменных окружения, включая механизм поиска пути, который развился в `$PATH`), пользовательские исполняемые скрипты оболочки и обработка прерываний. Управляющие структуры были расширены от `if/goto` до `if/then/else/endif`, `switch/breaksw/endsw` и `while/end/break/continue`. По мере распространения программирования в оболочке эти внешние команды были включены непосредственно в оболочку для повышения производительности. Однако наиболее широко распространёнными и влиятельными из ранних оболочек Unix были оболочка Bourne и оболочка C. Обе оболочки использовались в качестве кодовой базы и модели для множества производных и совместимых оболочек с расширенными наборами функций.

С оболочка

C shell, csh, был создан по образу и подобию языка программирования C, включая структуры управления и грамматику выражений. Он был написан Биллом Джоем во время обучения в аспирантуре Калифорнийского университета в Беркли и широко распространялся вместе с BSD Unix. C shell также представил множество функций для интерактивной работы, таких как история команд и механизмы редактирования, псевдонимы, стеки каталогов, обозначение тильдой, cdpath, управление заданиями и хеширование путей. На многих системах csh может быть символической или жесткой ссылкой на TENEX C shell (tcsh) – улучшенную версию оригинальной разработки Джоя. Хотя интерактивные возможности csh были перенесены в большинство других оболочек, структура языка не получила широкого распространения. Единственным аналогом является Hamilton C shell, разработанная Николь Гамильтон, впервые выпущенная для OS/2 в 1988 году и для Windows с 1992 года.