Введение
Интерпретатор команд Unix
Оболочка Томпсона была первой оболочкой Unix, представленной в первой версии Unix в 1971 году и написанной Кеном Томпсоном. Это был простой интерпретатор команд, не предназначенный для написания скриптов, но, тем не менее, она представила несколько инновационных возможностей в интерфейсе командной строки и послужила основой для разработки последующих оболочек Unix.
Дизайн
Конструкция оболочки была намеренно минималистичной; даже операторы if и goto, необходимые для управления потоком программы, были реализованы как отдельные команды. Оператор goto реализован интересным образом, поскольку он отделен от самой оболочки. Когда ему указывают перейти к "LABEL", он ищет в текущем командном файле строку, содержащую (замечание, которое просто игнорируется), а затем завершает работу. Когда оболочка пытается прочитать следующую строку, перепозиционированный файловый дескриптор направит ее к строке с меткой. В оболочке Томпсона перенаправление дополнительных файловых дескрипторов, кроме стандартного ввода и вывода (0 и 1), не предусмотрено. Перенаправление стандартной ошибки (дескриптор файла 2) также требует использования внешней программы-обертки. Оболочка поддерживает подстановку шаблонов (globbing), но фактически реализует ее, передавая ее команде, которая заменяет аргументы и вызывает запрошенную команду. Оболочка Томпсона поддерживает позиционные параметры, но не имеет именованных переменных и доступа к переменным окружения. Она поддерживает создание фоновых команд с помощью &, аналогично оболочке Bourne. Она предоставляет возможность использования кавычек и экранирования обратным слешем, хотя одинарные кавычки работают иначе, чем в оболочке Bourne.
The shell supports globbing, but actually implements it by deferring it to a command that replaces the arguments and calls the requested command. Thompson shell has positional parameters, but no named variables nor access to environmental variables. It understands the creation of background commands with , similar to Bourne shell. It offers quoting and backslash escapes, though the single quotes work differently from Bourne shell.
Снижение и замена
В результате упрощенного дизайна, к 1975 году, с выходом версии 6 Unix, стало очевидно, что оболочка Томпсона была недостаточной для большинства серьезных задач программирования. В это время разработчики дистрибутива UNIX Programmer's Workbench, в особенности Джон Маши, начали модифицировать оболочку Томпсона, чтобы сделать её более подходящей для программирования. Результатом, известным как оболочка PWB или оболочка Маше, стали более продвинутые механизмы управления потоком и внедрение переменных оболочки, однако её возможности оставались ограничены необходимостью сохранения совместимости с оболочкой Томпсона. В конечном итоге, оболочка Томпсона была заменена на оболочку Борна в версии 7 Unix и оболочку C в 2BSD, обе выпущенные в 1979 году. Поскольку практически все современные Unix и Unix-подобные системы происходят от V7 и 2BSD, оболочка Томпсона в настоящее время практически не используется. Тем не менее, она доступна в виде открытого исходного кода в составе нескольких дистрибутивов древнего Unix и была портирована на современные Unix-системы в качестве исторической демонстрации.