Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Окна оболочки tcsh и sh на рабочем столе Mac OS X Leopard [1]

Unix оболочки является интерпретатор командной строки или оболочки , которая обеспечивает командной строки пользовательский интерфейс для Unix-подобных операционных систем . Оболочка как интерактивный командный язык и язык сценариев , и используется операционной системой для управления выполнением системы с помощью сценариев оболочки . [2]

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

Концепция [ править ]

В самом общем смысле термин « оболочка» означает любую программу, которую пользователи используют для ввода команд. Оболочка скрывает детали базовой операционной системы и управляет техническими деталями интерфейса ядра операционной системы , который является самым низкоуровневым или «самым внутренним» компонентом большинства операционных систем.

В Unix-подобных операционных системах у пользователей обычно есть много вариантов интерпретаторов командной строки для интерактивных сеансов. Когда пользователь входит в систему в интерактивном режиме, программа оболочки автоматически выполняется на время сеанса. Тип оболочки, которая может быть настроена для каждого пользователя, обычно хранится в профиле пользователя, например, в локальном файле passwd или в системе распределенной конфигурации, такой как NIS или LDAP ; однако пользователь может выполнять любую другую доступную оболочку в интерактивном режиме.

На хостах с оконной системой , такой как macOS , некоторые пользователи могут никогда не использовать оболочку напрямую. В системах Unix оболочка исторически была языком реализации сценариев запуска системы, включая программу, которая запускает оконную систему, настраивает сеть и многие другие важные функции. Однако некоторые поставщики систем заменили традиционную систему запуска на основе оболочки ( init ) другими подходами, такими как systemd .

Ранние оболочки [ править ]

Первой оболочкой Unix была оболочка Томпсона , sh , написанная Кеном Томпсоном из Bell Labs и распространявшаяся с версиями 1–6 Unix с 1971 по 1975 год. [3] Хотя по современным стандартам она была примитивной, в ней были представлены многие основные общие функции. ко всем более поздним оболочкам Unix, включая конвейеры, простые управляющие структуры с использованием ifи goto, а также подстановочные знаки имен файлов. Хотя в настоящее время он не используется, он все еще доступен как часть некоторых древних систем UNIX .

Он был смоделирован по образцу оболочки Multics , разработанной в 1965 году американским инженером-программистом Глендой Шредер . Оболочка Multics Шредера была создана по образцу программы RUNCOM, которую Луи Пузен показал команде Multics. Суффикс «rc» в некоторых файлах конфигурации Unix (например, «.vimrc») является остатком предшественника RUNCOM оболочек Unix. [1] [4]

PWB оболочки или Mashey оболочки, ш , была вверх-совместимой версии Томпсона оболочки, дополненное энциклопедической статье и других и распространяемых с Программиста Workbench UNIX , около 1975-1977. Он сосредоточился на том, чтобы сделать программирование оболочки практичным, особенно в крупных общих вычислительных центрах. Добавлены переменные оболочки (предшественники переменных среды, включая механизм пути поиска, который превратился в $ PATH), исполняемые пользователем сценарии оболочки и обработку прерываний. Структуры управления были расширены с if / goto на if / then / else / endif, switch / breaksw /ndsw и while / end / break / continue. Поскольку программирование оболочки стало широко распространенным, эти внешние команды были включены в саму оболочку для повышения производительности.

Но наиболее широко распространен и влиятельных ранних оболочек Unix были Bourne оболочки и C оболочки . Обе оболочки использовались в качестве основы кодирования и модели для многих производных и аналогичных оболочек с расширенными наборами функций. [5]

Оболочка Борна [ править ]

Bourne оболочки , ш , был новый Unix оболочки от Стивена Борна в Bell Labs. [6] Распространенная как оболочка для UNIX версии 7 в 1979 году, она представила остальные основные функции, которые считаются общими для всех оболочек Unix, включая здесь документы , подстановку команд , более общие переменные и более обширные встроенные управляющие структуры . На язык, включая использование перевернутого ключевого слова для обозначения конца блока, повлиял АЛГОЛ 68 . [7] Традиционно имя программы оболочки Bourne - sh, а путь к ней в иерархии файловой системы Unix -/ bin / sh . Но также доступен ряд совместимых рабочих приложений с различными улучшениями и дополнительными функциями. Во многих системах sh может быть символической или жесткой ссылкой на одну из этих альтернатив:

  • Оболочка Almquist (ясень): написана как замена Bourne Shell под лицензией BSD; часто используется в средах с ограниченными ресурсами. Sh из FreeBSD , NetBSD (и их производных) основан на ash, который был улучшен, чтобы быть совместимым с POSIX .
    • Busybox : набор утилит Unix для небольших и встроенных систем, который включает 2 оболочки: ash, производную от оболочки Almquist; и тишина, независимая реализация оболочки Борна.
    • Оболочка Debian Almquist (тире): современная замена пеплу в Debian и Ubuntu
  • Оболочка Bourne-Again (bash): написана как часть проекта GNU для обеспечения расширенного набора функций Bourne Shell. Эту оболочку можно найти установленной и она является интерактивной оболочкой по умолчанию для пользователей в большинстве систем Linux .
  • KornShell (ksh): написано Дэвидом Корном на основе исходников оболочки Bourne [8] во время работы в Bell Labs.
  • Общественное достояние Korn shell (pdksh)
    • Оболочка MirBSD Korn (mksh): потомок OpenBSD / bin / ksh и pdksh, разработанный как часть MirOS BSD
  • Z shell (zsh): относительно современная оболочка, обратно совместимая с bash . Это оболочка по умолчанию в Kali Linux с 2020.4 и macOS с 10.15 Catalina .


Стандарт POSIX определяет свою стандартную оболочку как строгое подмножество оболочки Korn , расширенной версии оболочки Bourne. С точки зрения пользователя оболочка Bourne сразу распознавалась, когда она активна, по характерному по умолчанию символу командной строки, знаку доллара ( $ ).

Оболочка C [ править ]

С оболочкой , CSH , была смоделирована на языке программирования, в том числе управляющих структурами и грамматики выражения. Он был написан Биллом Джоем, аспирантом Калифорнийского университета в Беркли , и широко распространялся вместе с BSD Unix . [9]

Оболочка C также представила множество функций для интерактивной работы, включая механизмы истории и редактирования , псевдонимы , стеки каталогов , нотацию тильды , cdpath , управление заданиями и хеширование пути . Во многих системах csh может быть символической ссылкой или жесткой ссылкой на оболочку TENEX C (tcsh), улучшенную версию исходной версии Joy. Хотя интерактивные возможности csh были скопированы в большинство других оболочек, структура языка не получила широкого распространения. Единственный аналог - оболочка Hamilton C, написанный Николь Гамильтон, впервые распространен на OS / 2 в 1988 году и на Windows с 1992 года. [10]

Файлы конфигурации [ править ]

Оболочки читают файлы конфигурации в различных обстоятельствах. Эти файлы обычно содержат команды для оболочки и выполняются при загрузке; они обычно используются для установки важных переменных, используемых для поиска исполняемых файлов, таких как $ PATH , и других, которые управляют поведением и внешним видом оболочки. В таблице в этом разделе показаны файлы конфигурации для популярных оболочек. [11]

Объяснение:

  • пустой означает, что файл вообще не читается оболочкой.
  • «да» означает, что файл всегда читается оболочкой при запуске.
  • «Логин» означает, что файл читается, если оболочка является оболочкой входа в систему.
  • «n / login» означает, что файл читается, если оболочка не является оболочкой входа в систему.
  • "внутр." означает, что файл читается, если оболочка интерактивна.
  1. ^ только если ~ / .tcshrc не найден
  2. ^ Только более новые версии Bourne Shell
  3. ^ Доступно в системах, поддерживающих опцию «User Portability Utilities»; Значение переменной должно быть абсолютным путем, и оно игнорируется, «если реальный и эффективный идентификаторы пользователя или реальный и эффективный идентификаторы группы отличаются». [13]
  4. ^ $ ENV - это $ HOME / .shrc в новых версиях Bourne Shell.
  5. ^ То же поведение, что и sh , но только при вызове как sh (bash 2+) или, начиная с bash 4.2, также при явном вызовев режиме совместимости с POSIX (с параметрами --posix или -o posix ). [14]
  6. ^ a b Только в режиме совместимости sh / ksh (при вызове как bash, sh, ksh)
  7. ^ a b c на самом деле первая читаемая из ~ / .bash_profile , ~ / .bash_login и ~ / .profile ; и только ~ / .profile, если вызывается как sh или, по крайней мере, с Bash 4.2, если вызывается явно в режиме совместимости с POSIX (с параметрами --posix или -o posix )

Другие оболочки [ править ]

Варианты концепции оболочки Unix, которые не происходят от оболочки Bourne или оболочки C, включают следующее: [15]

  • es - rc-совместимая оболочка функционального программирования, написанная в середине 1990-х годов.
  • Дружественная интерактивная оболочка (рыба) - впервые выпущена в 2005 году.
  • PowerShell - объектно-ориентированная оболочка, изначально разработанная для ОС Windows и теперь доступная для macOS и Linux.
  • Qshell - оболочка в операционной системе IBM i, основанная на стандартах POSIX и X / Open .
  • rc - оболочка по умолчанию на Plan 9 от Bell Labs и Unix версии 10, написанная Томом Даффом . Были сделаны порты для различных Unix-подобных операционных систем.
  • scsh - Оболочка схемы .
  • wish - оконная оболочка для Tcl / Tk .

См. Также [ править ]

  • Сравнение командных оболочек
  • Список команд Unix
  • Цикл чтения-оценки-печати
  • Ограниченная оболочка
  • Оболочка (вычисления)
  • Счет Shell
  • Сценарий оболочки
  • Лопатой для снарядов

Ссылки [ править ]

  1. ^ a b Том Ван Флек (1995-02-05). «Юникс и Мультики» . MultICAL.org . Проверено 14 августа 2012 .
  2. Перейти ↑ Bourne, Stephen R. (октябрь 1983 г.). «Оболочка Unix» . БАЙТ . п. 187 . Проверено 30 января 2015 года .
  3. ^ "Порт Томпсона V6 Shell - История" . V6shell.org . Проверено 14 августа 2012 .
  4. ^ Луи Пузен (2000-11-25). «Происхождение ракушки» . MultICAL.org . Проверено 14 августа 2012 .
  5. ^ Николай Безруков (2015-08-13). «Введение в историю оболочки Unix» . Мягкая панорама . Проверено 21 августа 2016 .
  6. ^ "Оболочка Борна, или ш" . Интервью со Стивом Борном . Компьютерный мир . 2009-03-05 . Проверено 21 августа 2016 .
  7. ^ " Re: Возвращение к поздним шароварам " . Проверено 20 сентября 2014 года .
  8. ^ Корн, Дэвид Г. (26 октября 1994 г.), «ksh - расширяемый язык высокого уровня» , Материалы симпозиума по языкам очень высокого уровня USENIX 1994 , Ассоциация USENIX , получено 5 февраля 2015 г. , Вместо изобретения нового языка сценариев , мы создали систему ввода формы, изменив оболочку Bourne, добавив при необходимости встроенные команды.
  9. ^ Харли Хан, Руководство Харли Хана по Unix и Linux .
  10. ^ «Оболочка Hamilton C для Windows Release Notes 4.0» . Проверено 20 сентября 2014 года .
  11. ^ "Различные оболочки UNIX" . unixnote.com. 2010 . Проверено 21 августа 2016 .
  12. ^ SCO Unix Group, SCO Unixware 7 документации, 22 апреля 2004, извлекаться 18 окт 2012 .
  13. ^ "Командный язык оболочки" . opengroup.org . Проверено 15 июня 2015 года .
  14. ^ «Справочное руководство Bash: файлы запуска Bash» . gnu.org . Проверено 15 июня 2015 года .
  15. ^ «Порты FreeBSD: оболочки» . Freebsd.org. 2014-03-30 . Проверено 5 апреля 2014 .