A Оболочка Unix - это интерпретатор командной строки или оболочка, которая предоставляет командную строку пользовательский интерфейс для Unix-подобных операционных систем. Оболочка представляет собой интерактивный командный язык и язык сценариев и используется операционной системой для управления выполнением системы с помощью сценариев оболочки.
Обычно пользователи взаимодействовать с оболочкой Unix с помощью эмулятора терминала ; однако прямая работа через последовательные аппаратные соединения или Secure Shell обычна для серверных систем. Все оболочки Unix предоставляют имя файла подстановочный знак, конвейер, здесь документы, подстановка команд, переменные и управляющие структуры для проверки условий и итерации.
В самом общем смысле термин «оболочка» означает любую программу, которую пользователи используют для ввода команд. Оболочка скрывает детали базовой операционной системы и управляет техническими деталями интерфейса операционной системы ядра, который является самым нижним уровнем или «внутренним» компонентом большинства операционных систем.
В Unix-подобных операционных системах у пользователей обычно есть много вариантов интерпретаторов командной строки для интерактивных сеансов. Когда пользователь входит в систему в интерактивном режиме, программа оболочки автоматически выполняется на время сеанса. Тип оболочки, который можно настроить для каждого пользователя, обычно сохраняется в профиле пользователя, например, в локальном файле passwd или в системе распределенной конфигурации, такой как NIS или LDAP ; однако пользователь может выполнять любую другую доступную оболочку в интерактивном режиме.
На хостах с оконной системой, например macOS, некоторые пользователи могут никогда не использовать оболочку напрямую. В системах Unix оболочка исторически была языком реализации сценариев запуска системы, включая программу, которая запускает оконную систему, настраивает сеть и многие другие важные функции. Однако некоторые поставщики систем заменили традиционную систему запуска на основе оболочки (init ) другими подходами, такими как systemd.
Первой оболочкой Unix была Оболочка Томпсона, sh, написанная Кеном Томпсоном в Bell Labs и распространяемая с версиями 1–6 Unix с 1971 по 1975 год. Хотя по современным стандартам она является элементарной, он представил многие из основных функций, общих для всех более поздних оболочек Unix, включая конвейерную связь, простые управляющие структуры с использованием if
и goto
, а также подстановочные знаки имени файла. Хотя в настоящее время он не используется, он все еще доступен как часть некоторых древних систем UNIX.
. Он был смоделирован на основе оболочки Multics, разработанной в 1965 году американским инженером-программистом Глендой Шредер. Оболочка Multics Шредера была смоделирована после программы RUNCOM Луи Пузена, представленной группе Multics. Суффикс "rc" в некоторых файлах конфигурации Unix (например, ".vimrc") является остатком RUNCOM-предшественника оболочек Unix.
PWB shell или оболочка Mashey, sh, была совместимой снизу вверх версией оболочки Томпсона, дополненной John Mashey и другими и распространявшейся с Programmer's Workbench UNIX, примерно 1975–1977 гг. Он сосредоточился на том, чтобы сделать программирование оболочки практичным, особенно в крупных общих вычислительных центрах. Он добавил переменные оболочки (предшественники переменных среды, включая механизм пути поиска, который превратился в $ PATH), исполняемые пользователем сценарии оболочки и обработку прерываний. Структуры управления были расширены с if / goto на if / then / else / endif, switch / breaksw /ndsw и while / end / break / continue. Поскольку программирование оболочки стало широко распространенным, эти внешние команды были включены в саму оболочку для повышения производительности.
Но наиболее широко распространенными и влиятельными из ранних оболочек Unix были оболочка Bourne и оболочка C. Обе оболочки использовались в качестве основы кодирования и модели для многих производных и аналогичных оболочек с расширенными наборами функций.
оболочка Bourne, sh, была новой оболочкой Unix, разработанной Стивеном Борном из Bell Labs. Распространенный как оболочка для UNIX версии 7 в 1979 году, он представил остальные основные функции, которые считаются общими для всех оболочек Unix, включая здесь документы, подстановка команд, более общие переменные и более обширные встроенные управляющие структуры. На язык, включая использование перевернутого ключевого слова для обозначения конца блока, повлиял АЛГОЛ 68. Традиционно имя программы оболочки Bourne - sh, а путь к ней в иерархии файловой системы Unix - / bin / sh. Но также доступен ряд совместимых рабочих приложений с различными улучшениями и дополнительными функциями. Во многих системах sh может быть символической ссылкой или жесткой ссылкой на одну из следующих альтернатив:
Стандарт POSIX определяет свою стандартную оболочку как строгое подмножество оболочки Korn, расширенной версии оболочки Bourne. С точки зрения пользователя оболочка Bourne сразу распознавалась, когда она активна, по характерному по умолчанию символу подсказки командной строки, знаку доллара ($).
Оболочка C, csh, была смоделирована на языке программирования C, включая управляющие структуры и грамматику выражений. Он был написан Биллом Джоем в качестве аспиранта Калифорнийского университета в Беркли и широко распространялся с BSD Unix.
. Оболочка C также представила множество функций для интерактивная работа, включая механизмы истории и редактирования, псевдонимы, стеки каталогов, тильда, cdpath, управление заданиями и хеширование пути. Во многих системах csh может быть символической ссылкой или жесткой ссылкой на оболочку TENEX C (tcsh), улучшенную версию исходной версии Joy. Хотя интерактивные возможности csh были скопированы в большинство других оболочек, структура языка не получила широкого распространения. Единственная похожая работа - это оболочка Hamilton C, написанная Николь Гамильтон, впервые распространенная в OS / 2 в 1988 году и в Windows с 1992 года.
Оболочки читают файлы конфигурации в различных обстоятельствах. Эти файлы обычно содержат команды для оболочки и выполняются при загрузке; они обычно используются для установки важных переменных, используемых для поиска исполняемых файлов, таких как $ PATH, и других, которые управляют поведением и внешним видом оболочки. В таблице в этом разделе показаны файлы конфигурации для популярных оболочек.
sh | ksh | csh | tcsh | bash | zsh | |
---|---|---|---|---|---|---|
/etc/.login | login | логин | ||||
/etc/csh.cshrc | да | да | ||||
/etc/csh.login | логин | логин | ||||
~ /.tcshrc | да | |||||
~ /.cshrc | да | да | ||||
~ / etc / ksh.kshrc | внутр. | |||||
/etc/sh.shrc | int. | |||||
$ ENV (обычно ~ /.kshrc) | int. | int. | int. | |||
~ /.login | логин | логин | ||||
~ /.logout | логин | логин | ||||
/ etc / profile | логин | логин | логин | логин | ||
~ /.profile | логин | логин | логин | логин | ||
~ /.bash_profile | логин | |||||
~ /.bash_login | логин | |||||
~ /.bash_logout | логин | |||||
~ /.bashrc | int. + N / login | |||||
/ etc / zshenv | да | |||||
/ etc / zprofile | логин | |||||
/ etc / zshrc | int. | |||||
/ etc / zlogin | логин | |||||
/ etc / zlogout | логин | |||||
~ /.zshenv | да | |||||
~ /.zprofile | логин | |||||
~ /. zshrc | внутр. | |||||
~ /.zlogin | логин |
Объяснение:
Варианты концепции оболочки Unix, которые не являются производными от оболочки Bourne или оболочки C, включают следующее: