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

Оболочка Борна
Версия 7 UNIX SIMH PDP11 Kernels Shell.png
Взаимодействие с оболочкой Борна в Unix версии 7
Автор (ы) оригинала Стивен Борн
Разработчики) Bell Telephone Laboratories
изначальный выпуск 1979 ; 42 года назад ( 1979 )
Операционная система Unix
Тип Оболочка Unix
Лицензия стадии обсуждения ]

Борна оболочка ( 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 году. Впервые появившись в Unix версии 7 , оболочка Bourne заменила оболочку Mashey .

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

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

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

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

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

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

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

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

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

  • Встроенная 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 оболочки (КШ) , написанной Дэвидом Korn на основе исходного кода Bourne Shell, был срединный путь между Bourne оболочки и оболочки С . Его синтаксис в основном был взят из оболочки Bourne, а функции управления заданиями напоминали функции оболочки C. Функциональные возможности исходной оболочки Korn Shell (известной как ksh88 с года ее появления) были использованы в качестве основы для стандарта оболочки POSIX . Более новая версия, ksh93, имеет открытый исходный код с 2000 года и используется в некоторых дистрибутивах Linux . Клон ksh88, известный как pdksh, является оболочкой по умолчанию в OpenBSD.

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

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

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

Оболочка C

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

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

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

Прочие снаряды

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

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

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

использованная литература

внешние ссылки