Автор (ы) оригинала | Стивен Борн |
---|---|
Разработчики) | Bell Telephone Laboratories |
Первый выпуск | 1979 |
Операционная система | Unix |
Тип | Оболочка Unix |
Лицензия | [в стадии обсуждения ] |
Борна оболочка ( sh
) представляет собой оболочку командной строки интерпретатор для компьютера операционных систем .
Bourne оболочка была по умолчанию оболочка для версии 7 Unix . Unix-подобные системы продолжают иметь - /bin/sh
это будет оболочка Bourne, символическая или жесткая ссылка на совместимую оболочку - даже когда большинство пользователей использует другие оболочки.
Разработанный Стивеном Борном из Bell Labs , он был заменой оболочки Томпсона , исполняемый файл которой имел то же имя - sh
. Он был выпущен в 1979 году в версии 7 для Unix, распространяемой среди колледжей и университетов. Хотя он используется как интерактивный интерпретатор команд, он также был задуман как язык сценариев и содержит большинство функций, которые обычно считаются для создания структурированных программ.
Она получила известность после публикации The Unix среды программирования на Керниган и Роб Пайк -The первый коммерчески опубликовал книгу , которая представила оболочку в качестве языка программирования в обучающей форме.
История [ править ]
Истоки [ править ]
Работа над оболочкой 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 ~ fi
case ~ in ~ esac
for/while ~ do ~ od
done
od
4.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, которые все еще используются в телекоммуникационной отрасли. [ необходима цитата ]
Корн Шелл [ править ]
Корн оболочка (КШ) , написанный Дэвид 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
Ссылки [ править ]
- ^ https://www.bsdcan.org/2015/schedule/events/612.en.html Стивен Борн Основной доклад на BSDCan 2015
- ^ а б Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139.
- ^ "Азия языков программирования: оболочка Борна, или sh" . computerworld.com.au . Архивировано из оригинала 11 января 2010 года . Проверено 6 марта 2009 года .
- ↑ Bourne, Steve (12 января 1979 г.). "mac.h - Макросы, используемые Борном для структурирования C, например Algol68C" . Корпорация AT&T . Проверено 9 сентября 2006 года .
- ^ Лэндон Курт Нолл ; Саймон Купер; Питер Сибах и Леонид А. Броухис (2004). «Часто задаваемые вопросы о IOCCC - Q / A: Как начал работу IOCCC?» . www.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, поддерживаемый Йоргом Шиллингом» . Schily-Tools .
- ^ Введение в оболочке C по Билл Джой . [ требуется страница ]
- Перейти ↑ Bourne, Stephen R. (октябрь 1983 г.). «Оболочка Unix» . БАЙТ . п. 187 . Проверено 30 января 2015 года .
- ↑ Том Кристиансен (28 сентября 1995 г.). «Программирование на Csh считается вредным» . Проверено 17 февраля 2014 года .
Внешние ссылки [ править ]
Использование внешних ссылок в этом разделе может не соответствовать политикам или рекомендациям Википедии . Август 2016 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
В Викиучебнике есть книга по теме: Скрипты Bourne Shell. |
- Отдельные члены «Традиционной семьи ракушек Борна»
- «Характерные общие свойства традиционных снарядов Борна»
- Исторический исходный код оболочки 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 г.