Оболочка Борна
![]() Взаимодействие оболочки Bourne в Unix версии 7 | |
Оригинальный автор(ы) | Стивен Борн |
---|---|
Разработчик(и) | Телефонные лаборатории Белла |
Первоначальный выпуск | 1979 год |
Операционная система | Юникс |
Тип | оболочка Unix |
Лицензия | [ в стадии обсуждения ] |
Оболочка Борна ( sh
) — интерпретатор командной строки для компьютерных операционных систем .
Оболочка Bourne была оболочкой по умолчанию для Unix версии 7 . Unix-подобные системы продолжают иметь /bin/sh
— это будет оболочка Bourne, символическая ссылка или жесткая ссылка на совместимую оболочку — даже если большинство пользователей используют другие оболочки.
Разработанная Стивеном Борном из Bell Labs , она стала заменой оболочке Thompson , исполняемый файл которой имел то же имя — sh
. Он был выпущен в 1979 году в версии 7 Unix, распространяемой среди колледжей и университетов. Хотя он используется в качестве интерактивного интерпретатора команд, он также задумывался как язык сценариев и содержит большинство функций, которые обычно используются для создания структурированных программ.
Он приобрел популярность после публикации книги «Среда программирования Unix» Брайана Кернигана и Роба Пайка — первой коммерчески изданной книги, в которой оболочка представлена как язык программирования в учебной форме.
История
[ редактировать ]
Происхождение
[ редактировать ]Работа над оболочкой Bourne началась в 1976 году. [1] Впервые появившись в версии 7 Unix , [2] оболочке Bourne предшествовала оболочка Mashey .
Некоторые из основных целей оболочки были: [3]
- Разрешить сценариев оболочки использование в качестве фильтров .
- Обеспечить программируемость, включая поток управления и переменные .
- Контроль над всеми дескрипторами файлов ввода/вывода .
- Управление обработкой сигналов внутри скриптов.
- Никаких ограничений на длину строк при интерпретации сценариев оболочки.
- Рационализировать и обобщить механизм цитирования строк.
- окружения Механизм . Это позволило установить контекст при запуске и предоставило сценариям оболочки возможность передавать контекст подскриптам ( процессам ) без необходимости использования явных позиционных параметров .
Особенности оригинальной версии
[ редактировать ]Особенности оболочки UNIX Bourne версии 7 включают в себя:
- Сценарии можно вызывать как команды, используя их имена файлов.
- Может использоваться интерактивно или неинтерактивно.
- Позволяет как синхронное, так и асинхронное выполнение команд.
- Поддерживает перенаправление ввода и вывода и конвейеры.
- Предоставляет набор встроенных команд.
- Предоставляет конструкции управления потоком и средства котировок.
- Бестиповые переменные
- Обеспечивает область видимости локальных и глобальных переменных.
- Скрипты не требуют компиляции перед выполнением
- Не имеет средства перехода, поэтому может потребоваться реструктуризация кода.
- Подстановка команд с использованием обратных кавычек :
`command`
. - Здесь документы с использованием
<<
встроить блок входного текста в скрипт. for ~ do ~ done
циклы, в частности использование$*
для перебора аргументов, а такжеfor ~ in ~ do ~ done
циклы для перебора списков.case ~ in ~ esac
механизм выбора, в первую очередь предназначенный для помощи в анализе аргументов .sh
обеспечена поддержка переменных среды с использованием параметров ключевых слов и экспортируемых переменных.- Содержит строгие условия для управления вводом и выводом, а также средства сопоставления выражений .
Оболочка Bourne также была первой, в которой было реализовано соглашение об использовании файлового дескриптора. 2>
для сообщений об ошибках , что обеспечивает гораздо больший программный контроль во время написания сценариев, сохраняя сообщения об ошибках отдельно от данных.
На стиль программирования Стивена Борна повлиял его опыт работы с ALGOL 68C. компилятором [2] над которым он работал в Кембриджском университете . В дополнение к стилю, в котором была написана программа, Борн повторно использовал части языка АЛГОЛА 68 . if ~ then ~ elif ~ then ~ else ~ fi
, case ~ in ~ esac
и for/while ~ do ~ od
" (с использованием done
вместо od
) в обычном синтаксисе оболочки Unix Bourne. Более того, хотя оболочка v7 написана на C , Борн воспользовался некоторыми макросами. [4] C чтобы придать исходному коду оттенок ALGOL 68. Эти макросы (вместе с командой Finger , распространяемой в Unix версии 4.2BSD ) вдохновили на проведение Международного конкурса запутанного кода C (IOCCC). [5]
Функции, представленные после 1979 г.
[ редактировать ]С годами оболочка Bourne была усовершенствована в AT&T. Таким образом, различные варианты называются как соответствующие версии Unix AT&T, с которыми они были выпущены (некоторыми важными вариантами являются Version7, System III, 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
встроенный — оболочка СВР2 (1984 г.) - Встроенные модули
unset
,echo
,type
— снаряд СВР2 (1984 г.) - Исходный код, де-АЛГОЛ68 - оболочка SVR2 (1984 г.)
- Современный "
$@
» – снаряд СВР3 (1986 г.) - Встроенный
getopts
— снаряд СВР3 (1986 г.) - Очищенная обработка параметров позволяет рекурсивно вызывать функции – оболочка SVR3 (1986).
- 8-битная очистка — оболочка SVR3 (1986)
- Управление заданиями – оболочка СВР4 (1989 г.)
- Многобайтовая поддержка - оболочка SVR4 (1989 г.)
Варианты
[ редактировать ]Оболочка ДМЕРТ
[ редактировать ]Duplex Multi-Environment Real-Time ( DMERT ) — это гибридная операционная система с разделением времени и режимом реального времени, разработанная в 1970-х годах в лаборатории Bell Labs в Индиан-Хилл в Нейпервилле, штат Иллинойс, с использованием моментального снимка Bourne Shell 1978 года «ВЕРСИЯ sys137 ДАТА 1978 г., 12 октября 1978 г.». 22:39:57». [ нужна ссылка ] Оболочка DMERT работает на компьютерах 3B21D , которые до сих пор используются в телекоммуникационной отрасли. [ нужна ссылка ]
Корн оболочка
[ редактировать ]
Оболочка Korn (ksh), написанная Дэвидом Корном на основе исходного кода Bourne Shell. [8] был промежуточным путём между оболочкой Bourne и C. оболочкой Его синтаксис был в основном заимствован из оболочки Bourne, а функции управления заданиями напоминали функции оболочки C. Функциональность оригинальной оболочки Korn Shell (известной как ksh88 с года ее появления) была использована в качестве основы для стандарта оболочки POSIX . Более новая версия, ksh93, имеет открытый исходный код с 2000 года и используется в некоторых дистрибутивах Linux . Клон ksh88, известный как pdksh, является оболочкой по умолчанию в OpenBSD.
Шили Борн Шелл
[ редактировать ]Йорга Шиллинга включает в себя три производных от Bourne Shell. Schily-Tools [9]
Отношения с другими оболочками
[ редактировать ]оболочка C
[ редактировать ]Билл Джой , автор оболочки C , раскритиковал оболочку Bourne как недружественную для интерактивного использования, [10] задача, в решении которой сам Стивен Борн признал превосходство оболочки C. Борн, однако, заявил, что его оболочка превосходит возможности написания сценариев и доступна в любой системе Unix. [11] а Том Кристиансен также раскритиковал оболочку C как непригодную для написания сценариев и программирования. [12]
Альмквистские снаряды
[ редактировать ]Из-за проблем с авторскими правами, связанными с оболочкой Bourne Shell, поскольку она использовалась в исторических выпусках CSRG BSD, Кеннет Альмквист разработал клон Bourne Shell, известный некоторым как оболочка Almquist и доступный по лицензии BSD , который используется сегодня в некоторых BSD. потомков и в ситуациях с нехваткой памяти. Оболочка Almquist была перенесена на Linux, а порт переименован в оболочку Debian Almquist , или тире. Эта оболочка обеспечивает более быстрое выполнение стандартных sh
(и стандарт POSIX sh
, в современных потомках) скрипты с меньшим объемом памяти , чем его аналог Bash. Его использование имеет тенденцию выявлять башизмы — предположения, ориентированные на bash, сделанные в сценариях, предназначенных для работы на sh.
Другие снаряды
[ редактировать ]- Bash ( оболочка Bourne-Again ) была разработана в 1989 году для проекта GNU и включает в себя функции оболочки Bourne, csh и ksh. Он должен быть POSIX-совместимым.
- rc был создан в Bell Labs Томом Даффом в качестве замены sh для версии 10 Unix . Это оболочка по умолчанию для Plan 9 от Bell Labs . Он был перенесен в UNIX как часть Plan 9 из User Space .
- Оболочка Z , разработанная Полом Фалстадом в 1990 году, представляет собой расширенную оболочку Bourne с большим количеством улучшений, включая некоторые функции Bash , ksh и tcsh .
Использование
[ редактировать ]Оболочка Bourne когда-то была стандартной для всех фирменных Unix систем , хотя исторически в системах на базе BSD было много сценариев, написанных на csh . В основе POSIX sh
синтаксиса, сценарии оболочки Bourne обычно можно запускать с помощью Bash или Dash в Linux или других Unix-подобных системах.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ https://www.bsdcan.org/2015/schedule/events/612.en.html Основной доклад Стивена Борна для BSDCan 2015
- ↑ Перейти обратно: Перейти обратно: а б Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139. Архивировано (PDF) из оригинала 4 мая 2014 года.
- ^ «А-Я языков программирования: оболочка Bourne, или sh» . www.computerworld.com.au . Архивировано из оригинала 11 января 2010 года . Проверено 6 марта 2009 г.
- ^ Борн, Стив (12 января 1979 г.). «mac.h — макросы, используемые Борном для структурирования C, например Algol68C» . Корпорация AT&T . Проверено 9 сентября 2006 г.
- ^ Лэндон Курт Нолл ; Саймон Купер; Питер Сибах и Леонид А. Брухис (2004). «Часто задаваемые вопросы IOCCC – Вопросы и ответы: Как возникла IOCCC?» . ioccc.org . Проверено 9 сентября 2006 г.
- ^ «что это за оболочка» . www.in-ulm.de .
- ^ «Традиционная семья раковин Борнов / история и развитие» . www.in-ulm.de .
- ^ Корн, Дэвид Г. (26 октября 1994 г.), «ksh - расширяемый язык высокого уровня» , Труды симпозиума USENIX 1994 г. по языкам очень высокого уровня , Ассоциация USENIX , получено 5 февраля 2015 г. ,
Вместо того, чтобы изобретать новый скриптовый язык, мы создали систему ввода форм путем изменения оболочки Bourne, добавляя при необходимости встроенные команды.
- ^ «Schily Bourne Shell — современный расширенный и совместимый с POSIX исходный код Bourne Shell, поддерживаемый Йоргом Шиллингом» . Шили-Инструменты .
- ^ Введение в оболочку C. Архивировано 13 июля 2018 года в Wayback Machine Биллом Джоем . [ нужна страница ]
- ^ Борн, Стивен Р. (октябрь 1983 г.). «Оболочка Unix» . БАЙТ . п. 187 . Проверено 30 января 2015 г.
- ^ Том Кристиансен (28 сентября 1995 г.). «Программирование Csh считается вредным» . Проверено 17 февраля 2014 г.
Внешние ссылки
[ редактировать ]![]() | в этом разделе Использование внешних ссылок может не соответствовать политике и рекомендациям Википедии . ( Август 2016 г. ) |

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