Оболочка Борна - Bourne shell
Автор (ы) оригинала | Стивен Борн |
---|---|
Разработчики) | 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 году. Впервые появившись в 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 ~ fi
case ~ in ~ esac
for/while ~ do ~ od
done
od
Функции, введенные после 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, которые все еще используются в телекоммуникационной отрасли.
Корн оболочка
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.
Прочие снаряды
- 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-подобных системах.
Смотрите также
использованная литература
внешние ссылки
- Отдельные члены «Традиционной семьи ракушек Борна»
- «Характерные общие свойства традиционных снарядов Борна»
- Исторический исходный код оболочки Bourne на языке C с использованием макросов mac.h 1979 г.
- Оригинальная документация Bourne Shell 1978 г.
- Перенос "семейной" оболочки SVR4 Bourne из OpenSolaris на некоторые другие Unix-подобные системы.
- Переход с оболочки System V (SVR4) на оболочку POSIX
- Учебник Bourne Shell (синтаксис)
- Часто задаваемые вопросы о различиях в оболочке
- Говард Дахда, Азбука языков программирования: оболочка Bourne, или sh - подробное интервью со Стивом Борном, создателем оболочки Bourne, или sh , Computerworld , 5 марта 2009 г.