stringtranslate.com

оболочка Unix

Окна оболочки tcsh и sh на рабочем столе Mac OS X Leopard [1]

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

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

Концепция

Как правило, оболочка — это программа, которая запускает другие программы в ответ на текстовые команды. Сложная оболочка также может изменять среду, в которой выполняются другие программы, передавая именованные переменные , список параметров или источник входных данных.

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

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

Ранние снаряды

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

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

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

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

Оболочка Борна

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

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

оболочка C

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

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

Конфигурационные файлы

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

Объяснение:

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

Другие снаряды

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

Смотрите также

Рекомендации

  1. ^ аб Том Ван Флек (5 февраля 1995 г.). «Юникс и мультики». Multicians.org . Проверено 14 августа 2012 г.
  2. ^ Борн, Стивен Р. (октябрь 1983 г.). «Оболочка Unix». БАЙТ . п. 187 . Проверено 30 января 2015 г.
  3. ^ "Порт V6 Thompson Shell - История" . V6shell.org . Проверено 14 августа 2012 г.
  4. ^ Луи Пузен (25 ноября 2000 г.). «Происхождение ракушки». Multicians.org . Проверено 14 августа 2012 г.
  5. ^ Николай Безруков (13 августа 2015 г.). «Введение в историю оболочки Unix». Мягкая панорама. Архивировано из оригинала 8 июня 2022 г. Проверено 21 августа 2016 г.
  6. ^ Борн, Стивен (5 марта 2009 г.). «А-Я языков программирования: оболочка Bourne, или sh» (интервью). Беседовал Говард Дада. Компьютерный мир . Проверено 16 августа 2022 г.
  7. ^ "Re: Возвращение к поздним цветущим" . Проверено 20 сентября 2014 г.
  8. ^ Корн, Дэвид Г. (26 октября 1994 г.), «ksh - расширяемый язык высокого уровня», Труды симпозиума USENIX 1994 г. по языкам очень высокого уровня , Ассоциация USENIX , получено 5 февраля 2015 г. , Вместо изобретения нового языка сценариев , мы создали систему ввода форм, изменив оболочку Bourne, добавив при необходимости встроенные команды.
  9. ^ Харли Хан, Руководство Харли Хана по Unix и Linux: Хронология Unix/Linux.
  10. ^ «Оболочка Hamilton C для примечаний к выпуску Windows 4.0» . Проверено 20 сентября 2014 г.
  11. ^ «Различные оболочки UNIX». unixnote.com. 2010. Архивировано из оригинала 3 апреля 2016 г. Проверено 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. 30 марта 2014 г. Архивировано из оригинала 12 января 2021 г. Проверено 5 апреля 2014 г.