Оболочка Борна - Bourne shell

Оболочка Борна
Взаимодействие с оболочкой Борна в Unix версии 7
Взаимодействие оболочки Борна на Версия 7 Unix
Оригинальный автор (ы)Стивен Борн
Разработчики)Bell Telephone Laboratories
изначальный выпуск1979; 41 год назад (1979)
Операционная системаUnix
ТипОболочка Unix
Лицензия[под обсуждение]

В Оболочка Борна (ш) это ракушка интерпретатор командной строки для компьютера операционные системы.

Оболочка Bourne была по умолчанию ракушка за Версия 7 Unix. Unix-подобный системы продолжают иметь / bin / sh- это будет оболочка Борна или символическая ссылка или же жесткая ссылка в совместимую оболочку - даже если большинство пользователей использует другие оболочки.

Разработан Стивен Борн в Bell Labs, это была замена Оболочка Томпсона, исполняемый файл которого имел то же имя -ш. Он был выпущен в 1979 году в версии 7 для Unix, распространяемой среди колледжей и университетов. Хотя он используется как интерактивный интерпретатор команд, он также задумывался как язык сценариев и содержит большинство функций, которые обычно считаются для создания структурированных программ.

Он приобрел популярность с публикацией Среда программирования Unix к Брайан Керниган и Роб Пайк - первая коммерчески опубликованная книга, в которой оболочка представлена ​​как язык программирования в виде учебника.

История

Версия 7 Unix: оригинальная оболочка Борна страница руководства. PDP-11 моделирование с SIMH

Происхождение

Работа над оболочкой Bourne началась в 1976 году.[1] Впервые появившись в Версия 7 Unix,[2] оболочка Борна заменила Машей оболочка.

Некоторые из основных целей оболочки были:[3]

Особенности оригинальной версии

Возможности оболочки Bourne UNIX версии 7:

  • Скрипты можно вызывать как команды, используя их имя файла.
  • Может использоваться интерактивно или не интерактивно
  • Позволяет как синхронное, так и асинхронное выполнение команд
  • Поддерживает перенаправление ввода и вывода и конвейеры
  • Предоставляет набор встроенных команд
  • Предоставляет конструкции управления потоком, расценки и функции.
  • Бестиповые переменные
  • Предоставляет локальную и глобальную переменную
  • Скрипты не требуют компиляции перед выполнением
  • Не имеет средства goto, поэтому может потребоваться реструктуризация кода
  • Подстановка команд с помощью обратные цитаты: `команда`.
  • Здесь документы с помощью << для встраивания блока входного текста в сценарий.
  • для ~ сделать ~ сделано петли, в частности использование $* для перебора аргументов, а также для ~ в ~ делать ~ готово циклы для перебора списков.
  • case ~ in ~ esac механизм выбора, в первую очередь предназначенный для помощи анализ аргументов.
  • ш обеспечивает поддержку переменных среды с использованием параметров ключевого слова и экспортируемых переменных.
  • Содержит строгие положения для управления вводом и выводом, а также сопоставление выражений удобства.

Оболочка Bourne также была первой, в которой использовалось соглашение об использовании дескриптор файла 2> за Сообщения об ошибках, что позволяет значительно расширить программный контроль во время написания сценариев за счет отделения сообщений об ошибках от данных.

На стиль программирования Стивена Борна повлиял его опыт работы с АЛГОЛ 68C компилятор[2] над которым он работал Кембриджский университет. Помимо стиля, в котором была написана программа, Борн повторно использовал части АЛГОЛ 68 с если ~ тогда ~ Элиф ~ тогда ~ еще ~ фи, дело ~ в ~ esac и за/пока ~ делать ~ od" (с помощью сделано вместо od) в общих Unix Синтаксис оболочки Борна. Более того, - хотя оболочка v7 написана на C - Борн воспользовался некоторыми макросы[4] дать C исходный код ароматизатор АЛГОЛ 68. Эти макросы (вместе с Палец команда распространяется в версии Unix 4.2BSD ) вдохновил Международный конкурс запутанного кода C (IOCCC).[5]

Функции, введенные после 1979 года

С годами оболочка Bourne совершенствовалась в AT&T. Таким образом, различные варианты называются так же, как соответствующая версия AT&T Unix, с которой она была выпущена (некоторые важные варианты: Version7, SystemIII, SVR2, SVR3, SVR4). Поскольку оболочка никогда не версировалась, единственный способ определить ее - проверить ее функции.[6]

Особенности версий оболочки Bourne с 1979 года включают:[7]

  • Встроенный тест команда - оболочка System III (1981)
  • # как символ комментария - оболочка System III (1981)
  • Двоеточие в заменах параметров "$ {parameter: = word}" - оболочка System III (1981)
  • Продолжить с аргументом - оболочка System III (1981)
  • кошка << - EOF для документов с отступом - оболочка System III (1981)
  • Функции и возвращаться встроенный - оболочка СВР2 (1984)
  • Встроенные сброшен, эхо, тип - снаряд СВР2 (1984 г.)
  • Исходный код де-ALGOL68-ized - оболочка SVR2 (1984)
  • Современное "$@»- снаряд СВР3 (1986 г.)
  • Встроенный Getopts - снаряд СВР3 (1986)
  • Улучшенная обработка параметров позволяет рекурсивно вызывать функции - оболочка SVR3 (1986)
  • 8-битный чистый - оболочка SVR3 (1986)
  • Управление заданиями - оболочка SVR4 (1989 г.)
  • Многобайтовая поддержка - оболочка SVR4 (1989)

Варианты

Оболочка DMERT

Дуплекс в нескольких средах в реальном времени (DMERT ) - это гибридная операционная система с разделением времени / реального времени, разработанная в 1970-х годах в Bell Labs Indian Hill в г. Нейпервилл, Иллинойс использует моментальный снимок Bourne Shell 1978 г. "VERSION sys137 DATE 1978 Oct 12 22:39:57".[нужна цитата ] Оболочка DMERT работает на 3B21D компьютеры все еще используются в телекоммуникационной отрасли.[нужна цитата ]

Корн оболочка

Взаимодействие с pdksh в OpenBSD (оболочка по умолчанию)

В Корн оболочка (ksh) написано Дэвид Корн на основе исходного исходного кода Bourne Shell,[8] был промежуточным звеном между оболочкой Борна и Оболочка C. Его синтаксис в основном был взят из оболочки Bourne, в то время как его контроль работы функции напоминали таковые из оболочки C. Функциональность оригинальной оболочки Korn Shell (известной как ksh88 с года ее появления) была использована в качестве основы для POSIX стандарт оболочки. Более новая версия, ksh93, имеет открытый исходный код с 2000 года и используется на некоторых Дистрибутивы Linux. Клон ksh88, известный как pdksh является оболочкой по умолчанию в OpenBSD.

Шили Борн Шелл

Schily-Tools Йорга Шиллинга включает три производных Bourne Shell.[9]

Отношение к другим оболочкам

Оболочка C

Билл Джой, автор Оболочка C, раскритиковал оболочку Bourne как неудобную для интерактивного использования,[10] Задача, в решении которой сам Стивен Борн признал превосходство C shell. Однако Борн заявил, что его оболочка лучше подходит для написания сценариев и доступна в любой системе Unix,[11] и Том Кристиансен также критиковал оболочку C за непригодность для написания сценариев и программирования.[12]

Ракушки Альмквиста

Из-за проблем с авторским правом, связанных с оболочкой Bourne Shell, поскольку она использовалась в исторических CSRG Выпуская BSD, Кеннет Алмквист разработал клон Bourne Shell, известный некоторым как Раковина альмквиста и доступен под Лицензия BSD, который используется сегодня в некоторых потомках BSD и в ситуациях с нехваткой памяти. Оболочка Almquist была перенесена на Linux, и порт переименовал Оболочка Debian Almquist, или тире. Эта оболочка обеспечивает более быстрое выполнение стандартных ш (и стандарт POSIX ш, в современных потомках) скрипты с меньшим объемом памяти, чем его аналог, Bash. Его использование имеет тенденцию обнажать башизмы - bash-ориентированные предположения, сделанные в сценариях, предназначенных для запуска на sh.

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

использование

Раковина Bourne когда-то была стандартом для всех фирменных Unix системы, хотя исторически BSD -системы имели много скриптов, написанных на csh. В основе POSIX ш синтаксис, сценарии оболочки Bourne обычно можно запускать с Баш или же бросаться на GNU /Linux или другой Unix-подобный системы.

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

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

  1. ^ https://www.bsdcan.org/2015/schedule/events/612.en.html Стивен Борн Ключевой доклад BSDCan 2015
  2. ^ а б Макилрой, М.Д. (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
  3. ^ "Азбука языков программирования: оболочка Борна или sh". computerworld.com.au. Архивировано из оригинал 11 января 2010 г.. Получено 6 марта 2009.
  4. ^ Борн, Стив (12 января 1979 г.). "mac.h - Макросы, используемые Борном для структурирования C, например Algol68C". Корпорация AT&T. Получено 9 сентября 2006.
  5. ^ Лэндон Курт Нолл; Саймон Купер; Питер Сибах и Леонид А. Броухис (2004). «Часто задаваемые вопросы о IOCCC - Q / A: Как начинался IOCCC?». www.ioccc.org. Получено 9 сентября 2006.
  6. ^ "что это за оболочка". www.in-ulm.de.
  7. ^ "традиционное семейство раковин Борна / история и развитие". www.in-ulm.de.
  8. ^ Корн, Дэвид Г. (26 октября 1994 г.), «ksh - расширяемый язык высокого уровня», Материалы симпозиума USENIX 1994 по языкам очень высокого уровня, Ассоциация USENIX, получено 5 февраля 2015, Вместо того, чтобы изобретать новый язык сценариев, мы создали систему ввода формы, изменив оболочку Bourne, добавив при необходимости встроенные команды.
  9. ^ «Schily Bourne Shell - современный усовершенствованный и POSIX-совместимый исходный код Bourne Shell, поддерживаемый Йоргом Шиллингом». Schily-Tools.
  10. ^ Введение в оболочку C к Билл Джой.[страница нужна ]
  11. ^ Борн, Стивен Р. (октябрь 1983 г.). "Оболочка Unix". БАЙТ. п. 187. Получено 30 января 2015.
  12. ^ Том Кристиансен (28 сентября 1995 г.). «Программирование на Csh считается вредным». Получено 17 февраля 2014.

внешняя ссылка