Оболонка Томпсона
Оболо́нка То́мпсона (англ. Thompson shell) — перша оболонка Unix у першій версії Unix 1971 року, написана Кеном Томпсоном. Була простим командним інтерпретатором, не призначеним для скриптів. В оболонці з'явився ряд інноваційних функцій для інтерфейсу командного рядка і вона спонукала до розвитку майбутніх оболонок Unix.
Назва «оболонка» для командного рядка інтерпретатора і концепція перетворення корпусу користувачів програми поза ядра операційної системи були введені в Unix прекурсорі MULTICS.
Одною з перших особливостей оболонки Томпсона був компактний синтаксис для входу/виводу перенаправлення. У MULTICS, перенаправлення введення або виведення команди потрібна окрема команда для запуску та зупинки перенаправлення, і в Unix, можна просто додати аргумент в командному рядку, що складається з символу <
і наступного імені файлу для введення або >
для позначення виводу, оболонка буде перенаправляти введення/вивід протягом терміну дії команди. Цей синтаксис був вже присутній в першій версії Unix у 1971 році.
Крім цього, в оболонці була розширена концепція конвеєрів. За пропозицією Дугласа МакІлроу синтаксис конвеєрів був розширений тим, що вивід однієї команди може бути прийнятий на вхід іншої команди. Спочатку синтаксис конвеєрів полягав у наступному:
команда1> команда2>
Цей синтаксис виявився занадто двозначним і його було легко сплутати з перенаправленням файлів. За версією 4, синтаксис змінили на використання як |
і ^
символів для позначення конвеєрів:
команда1 | команда2
Це справляло точно такий же результат, як:
команда1 ^ команда2
Цей синтаксис для перенаправлень з <
та >
, а також конвеєрів з |
, виявився життєздатним і був прийнятий в більшості інших оболонок Unix і командних оболонок ряду інших операційних систем, в першу чергу на DOS, OS/2 і Microsoft Windows.
Дизайн оболонки був навмисне мінімалістський, навіть if
і goto
, необхідні для контролю програмного потоку, були виконані у вигляді окремих команд (програм), а не вбудовані в оболонку. У результаті в 1975 році з 6-ї версії Unix стало зрозуміло, що оболонка Томпсона недостатня для найсерйозніших завдань програмування.
Зрештою, в Unix версії 7 оболонка Томпсона був замінена як головна оболонка на оболонку Борна (англ. Bourne Shell) i оболонку C (англ. C Shell) в 2BSD, випущену в 1979 році. Оскільки практично усі сучасні Unix і Unix-подібні системи є нащадками 7-ї версії Unix і 2BSD, то оболонка Томпсона, як правило, не використовуються. Однак оболонка Томпсона була портована на сучасні Unix як історичний експонат.
- The Evolution of the Unix Time-Sharing System [Архівовано 8 квітня 2015 у Wayback Machine.] — describes the early development of the shell(англ.)
- Origins of the Bourne shell [Архівовано 25 грудня 2008 у Wayback Machine.] — manual pages for the 3rd, 4th, and 6th edition Thompson shells, and other (англ.)resources on the early shells
- Sixth Edition Thompson Shell Port [Архівовано 15 грудня 2008 у Wayback Machine.] — the Thompson shell and its associated utilities ported to modern Unix systems (англ.)