Введение

Интерпретатор команд Unix

Оболочка Томпсона была первой оболочкой Unix, представленной в первой версии Unix в 1971 году и написанной Кеном Томпсоном. Это был простой интерпретатор команд, не предназначенный для написания скриптов, но, тем не менее, она представила несколько инновационных возможностей в интерфейсе командной строки и послужила основой для разработки последующих оболочек Unix.

Дизайн

Конструкция оболочки была намеренно минималистичной; даже операторы if и goto, необходимые для управления потоком программы, были реализованы как отдельные команды. Оператор goto реализован интересным образом, поскольку он отделен от самой оболочки. Когда ему указывают перейти к "LABEL", он ищет в текущем командном файле строку, содержащую (замечание, которое просто игнорируется), а затем завершает работу. Когда оболочка пытается прочитать следующую строку, перепозиционированный файловый дескриптор направит ее к строке с меткой. В оболочке Томпсона перенаправление дополнительных файловых дескрипторов, кроме стандартного ввода и вывода (0 и 1), не предусмотрено. Перенаправление стандартной ошибки (дескриптор файла 2) также требует использования внешней программы-обертки. Оболочка поддерживает подстановку шаблонов (globbing), но фактически реализует ее, передавая ее команде, которая заменяет аргументы и вызывает запрошенную команду. Оболочка Томпсона поддерживает позиционные параметры, но не имеет именованных переменных и доступа к переменным окружения. Она поддерживает создание фоновых команд с помощью &, аналогично оболочке Bourne. Она предоставляет возможность использования кавычек и экранирования обратным слешем, хотя одинарные кавычки работают иначе, чем в оболочке Bourne.

Снижение и замена

В результате упрощенного дизайна, к 1975 году, с выходом версии 6 Unix, стало очевидно, что оболочка Томпсона была недостаточной для большинства серьезных задач программирования. В это время разработчики дистрибутива UNIX Programmer's Workbench, в особенности Джон Маши, начали модифицировать оболочку Томпсона, чтобы сделать её более подходящей для программирования. Результатом, известным как оболочка PWB или оболочка Маше, стали более продвинутые механизмы управления потоком и внедрение переменных оболочки, однако её возможности оставались ограничены необходимостью сохранения совместимости с оболочкой Томпсона. В конечном итоге, оболочка Томпсона была заменена на оболочку Борна в версии 7 Unix и оболочку C в 2BSD, обе выпущенные в 1979 году. Поскольку практически все современные Unix и Unix-подобные системы происходят от V7 и 2BSD, оболочка Томпсона в настоящее время практически не используется. Тем не менее, она доступна в виде открытого исходного кода в составе нескольких дистрибутивов древнего Unix и была портирована на современные Unix-системы в качестве исторической демонстрации.