Томпсон оболочка является первой Unix оболочка , введенной в первой версии Unix в 1971 году, и была написана Кеном Томпсоном . [1] Это был простой командный интерпретатор, не предназначенный для написания сценариев, но, тем не менее, он привнес несколько инновационных функций в интерфейс командной строки и привел к разработке более поздних оболочек Unix.
Автор (ы) оригинала | Кен Томпсон |
---|---|
Разработчики) | AT&T Bell Laboratories |
Первый выпуск | 3 ноября 1971 г . |
Операционная система | Unix и Unix-подобные |
Тип | Оболочка Unix |
История
Название «оболочка» для интерпретатора командной строки и концепция превращения оболочки в пользовательскую программу вне ядра операционной системы были введены в предшественнике Unix Multics .
Ранней особенностью оболочки Томпсона был компактный синтаксис для перенаправления ввода / вывода. В Multics для перенаправления ввода или вывода команды требовались отдельные команды для запуска и остановки перенаправления; в Unix можно было просто добавить аргумент в командную строку, состоящий из символа <, за которым следует имя файла для ввода или символа> для вывода, и оболочка перенаправляла ввод-вывод на время выполнения команды. Этот синтаксис уже присутствовал при выпуске первой версии Unix в 1971 году.
Позднее добавилась концепция труб . По предложению Дугласа Макилроя синтаксис перенаправления был расширен, чтобы выходные данные одной команды могли передаваться на вход другой команды. Исходный синтаксис канала, описанный в руководстве по версии 3, был следующим:
команда1> команда2>
Этот синтаксис оказался слишком двусмысленным, и его легко спутать с перенаправлением в файлы и из файлов - система не может определить, является ли «command2» командой «command2» или файлом «command2». К Версии 4 синтаксис был изменен, чтобы использовать как | и символы ^ для обозначения труб:
command1 | command2
Это дает точно такой же результат, как:
команда1 ^ команда2
Символ> изменился на:
команда1> файл1
Это поместит вывод command1 в file1.
Синтаксис оболочки Томпсона для перенаправления с помощью <и> и конвейерной передачи с помощью | доказал свою надежность и был принят большинством других оболочек Unix и командных оболочек некоторых других операционных систем, особенно в DOS , OS / 2 и Microsoft Windows .
Отклонение и замены
Дизайн корпуса был намеренно минималистичным; даже операторы if и goto , необходимые для управления ходом программы, были реализованы как отдельные команды. [1] В результате к выпуску версии 6 Unix 1975 года стало ясно, что оболочка Томпсона неадекватна для большинства серьезных задач программирования.
В это время разработчики дистрибутива UNIX Programmer's Workbench , в первую очередь Джон Маши , начали модифицировать оболочку Thompson, чтобы сделать ее более подходящей для программирования. [1] Результат, известный как оболочка PWB или оболочка Mashey, включал более продвинутые механизмы управления потоком и введенные переменные оболочки, но оставался ограниченным из-за необходимости оставаться совместимым с оболочкой Томпсона.
Наконец, оболочка Томпсона была заменена в качестве основной оболочки Unix оболочкой Bourne в версии 7 Unix и оболочкой C в 2BSD , выпущенной в 1979 году. Поскольку практически все современные Unix и Unix-подобные системы являются потомками V7 и 2BSD, Оболочка Томпсона вообще больше не используется. Однако он доступен в виде открытого исходного кода как часть нескольких дистрибутивов с исходным кодом Ancient Unix и был перенесен на современные Unix в качестве исторического экспоната.
Смотрите также
Рекомендации
- ^ a b c Дж. Р. Маши (1976-10-13). «Использование командного языка как языка программирования высокого уровня». Труды 2-й Международной конференции по программной инженерии: 169–176. Цитировать журнал требует
|journal=
( помощь )
Внешние ссылки
- Страница руководства для оболочки Томпсона в Unix 1st Edition .
- Эволюция системы разделения времени Unix - описывает раннюю разработку оболочки.
- Происхождение оболочки Bourne - страницы руководства по оболочкам Thompson 3-го, 4-го и 6-го изданий и другие ресурсы по ранним оболочкам
- Шестое издание Thompson Shell Port - оболочка Thompson и связанные с ней утилиты, перенесенные на современные системы Unix