Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Борна оболочка ( sh) представляет собой оболочку командной строки интерпретатор для компьютера операционных систем .

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

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

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

История [ править ]

Версия 7 Unix : исходная страница руководства по оболочке Bourne . Моделирование PDP-11 с SIMH

Истоки [ править ]

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

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

  • Чтобы разрешить использование сценариев оболочки в качестве фильтров .
  • Обеспечить программируемость, включая поток управления и переменные .
  • Контроль над всеми дескрипторами файлов ввода / вывода .
  • Контроль над обработкой сигналов в скриптах.
  • Нет ограничений на длину строки при интерпретации сценариев оболочки.
  • Рационализировать и обобщить механизм цитирования строк.
  • Механизм среды . Это позволяло устанавливать контекст при запуске и давало возможность сценариям оболочки передавать контекст вспомогательным сценариям ( процессам ) без использования явных позиционных параметров .

Особенности исходной версии [ править ]

Особенности оболочки Bourne UNIX версии 7:

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

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

На стиль кодирования Стивена Борна повлиял его опыт работы с компилятором ALGOL 68C [2], над которым он работал в Кембриджском университете . В дополнении к стилю , в котором была написана программа, Борна повторно части АЛГОЛА 68 «с , и " ( с использованием вместо ) положений в общем Unix синтаксиса оболочки Bourne Более того, -. Хотя V7 оболочка написана на C - Борн использовали некоторые макросы [4], чтобы придать исходному коду C разновидность АЛГОЛА 68. Эти макросы (вместе с командой finger, распространяемой в версии Unixif ~ then ~ elif ~ then ~ else ~ ficase ~ in ~ esacfor/while ~ do ~ oddoneod4.2BSD ) послужил вдохновением для проведения Международного конкурса запутанного кода C (IOCCC). [5]

Функции, появившиеся после 1979 г. [ править ]

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

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

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

Варианты [ править ]

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

Duplex Multi-Environment Real-Time ( DMERT ) - это гибридная операционная система с разделением времени / реального времени, разработанная в 1970-х годах в Bell Labs Indian Hill в Нейпервилле, штат Иллинойс, использует моментальный снимок Bourne Shell 1978 года. ВЕРСИЯ sys137 DATE 1978 Oct 12 22:39:57 ». [ необходима цитата ] Оболочка DMERT работает на компьютерах 3B21D, которые все еще используются в телекоммуникационной отрасли. [ необходима цитата ]

Корн Шелл [ править ]

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

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

Шили Борн Шелл [ править ]

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

Связь с другими оболочками [ править ]

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

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

Раковины Альмквиста [ править ]

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

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

  • Bash ( оболочка Bourne-Again ) была разработана в 1989 году для проекта GNU и включает функции оболочки Bourne, csh и ksh. Он должен быть совместим с POSIX.
  • гс был создан в Bell Labs по Tom Duff в качестве замены ш для версии 10 Unix . Это оболочка по умолчанию для Plan 9 от Bell Labs . Он был перенесен на UNIX как часть Plan 9 из пользовательского пространства .
  • Оболочка Z , разработанная Полом Фалстадом в 1990 году, представляет собой расширенную оболочку Борна с большим количеством улучшений, включая некоторые функции Bash , ksh и tcsh .

Использование [ править ]

Оболочка Bourne когда-то была стандартной для всех известных Unix- систем, хотя исторически в системах на основе BSD было много скриптов, написанных на csh . В качестве основы синтаксиса POSIX sh сценарии оболочки Bourne обычно можно запускать с помощью Bash или dash в Linux или других Unix-подобных системах.

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

  • Сравнение командных оболочек
  • Оболочка 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. Bourne, Steve (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. Перейти ↑ Bourne, Stephen R. (октябрь 1983 г.). «Оболочка Unix» . БАЙТ . п. 187 . Проверено 30 января 2015 года .
  12. Том Кристиансен (28 сентября 1995 г.). «Программирование на Csh считается вредным» . Проверено 17 февраля 2014 года .

Внешние ссылки [ править ]

  • Отдельные члены «Традиционной семьи ракушек Борна»
  • «Характерные общие свойства традиционных снарядов Борна»
  • Исторический исходный код оболочки Bourne на языке C с использованием макросов mac.h 1979 г.
  • Оригинальная документация Bourne Shell 1978 г.
  • Перенос "семейной" оболочки SVR4 Bourne из OpenSolaris на некоторые другие Unix-подобные системы.
  • Переход с оболочки System V (SVR4) на оболочку POSIX
  • Учебник Bourne Shell (синтаксис)
  • Часто задаваемые вопросы о различиях в оболочке
  • Говард Дахда, A – Z языков программирования: оболочка Bourne, или sh - подробное интервью со Стивом Борном, создателем оболочки Bourne, или sh , Computerworld , 5 марта 2009 г.