Оболонка Томпсона

Оболо́нка То́мпсона (англ. 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 як історичний експонат.

Посилання[ред. | ред. код]