Оболочка PWB (также известная как оболочка Mashey ) была оболочкой Unix . [1]
Оболочка PWB была модифицированной (и в целом ограниченной для обеспечения совместимости снизу вверх) версией оболочки Thompson с дополнительными функциями для повышения удобства программирования. Она поддерживалась Джоном Маши и другими (Диком Хейтом, Аланом Глассером). [1] [2] [3]
PWB/UNIX началась с Research Unix 4th Edition в середине октября 1973 года и часто обновлялась в течение следующих нескольких лет, поскольку отдел PWB отслеживал изменения Research Unix и добавлял несколько функций. Оболочка PWB была выпущена в середине 1975 года [4] и оставалась доступной через PWB/UNIX на основе Version 6 Unix . [5] В Version 7 Unix (1979) оболочка PWB была заменена оболочкой Bourne . [6] Оболочка PWB была стандартной оболочкой для PWB/UNIX , около 1975–78 гг., [1] но не работала ни в одной из редакций Research Unix , поскольку требовала нового системного вызова , который позволял задать имя входа, каталог входа ( $s ) и TTY ( $t ), чтобы получить их.
В оболочке PWB было введено несколько функций, которые сохранились во многих более поздних оболочках. Команды if и goto были сделаны внутренними для оболочки и расширены, чтобы разрешить if - then - else - endif , а также были введены конструкции switch и while , а также onintr для игнорирования прерываний или их перехвата для выполнения очистки. [1] Можно было использовать простые переменные, хотя их имена были ограничены одной буквой, а некоторые буквы были зарезервированы для специальных целей, некоторые из которых являются предшественниками переменных окружения, имеющихся во всех системах Unix, начиная с версии 7 .
Например, переменная $s является предком $HOME , используемой для того, чтобы избежать жесткого кодирования имен путей. Переменная $p является предком $PATH , которая позволяла пользователям искать команды в каталогах по своему выбору. В отличие от большинства систем UNIX того времени, исходный компьютерный центр PWB/UNIX использовался несколькими группами программистов, которые не могли изменять содержимое /bin или /usr/bin, но хотели создавать свои собственные наборы общих команд. Кроме того, поиск команд оболочки был улучшен, чтобы позволить вызывать процедуры оболочки как двоичные команды, т. е. если оболочка находила недвоичный файл, помеченный как исполняемый, она создавала другой экземпляр оболочки для чтения этого файла как скрипта оболочки. Таким образом, люди могли вводить вместо . Все это поведение было упаковано как функция pexec , которая является предком execvp , чтобы позволить любой программе вызывать команды так же, как и оболочка.command argumentssh pathname/command arguments
Символ $ , который ранее использовался для обозначения аргументов в сценарии оболочки , стал маркером для разыменования переменной и мог использоваться для вставки значения переменной в строку в двойных кавычках . (Помимо более поздних оболочек, эта функция позже также появилась в языках программирования Perl и PHP .)
Эти функции не могли преодолеть недостатки оболочки Thompson, и поэтому Стивеном Борном была написана новая оболочка с нуля . Эта оболочка Bourne была несовместима с оболочками Thompson и PWB, но включала эквиваленты большинства функций оболочки PWB, но была сделана с нуля, а не постепенно, с большим обсуждением среди различных участников. В частности, переменные окружения и связанная с ними техника были разработаны Стивеном Борном, Джоном Маши и Деннисом Ритчи в качестве общего механизма для замены более ранних, более ограниченных функций. После принятия оболочки Bourne в качестве стандартной оболочки в версии 7 Unix использование оболочки PWB было постепенно прекращено, хотя некоторое время существовал внутренний курс Bell Labs под названием Bourne Shell Programming for Mashey Shell Programmers . Оболочка C , разработанная до публичного выпуска оболочки Bourne, также унаследовала некоторые функции оболочки PWB. [ необходима цитата ]
дополнение к этим переменным [$n, $p, $r, $s и $t] предоставляется следующее: $$ содержит 5-значное число, которое является уникальным номером процесса текущей оболочки. В некоторых случаях необходимо знать номер процесса, например, чтобы завершить его. Однако на сегодняшний день его наиболее распространенным применением было создание уникальных имен для временных файлов.
Оригинальная оболочка Thompson, оболочка Mashey и оболочка Bourne назывались sh, и они перекрывали или заменяли друг друга в 1970–1976 годах, поскольку они были улучшены и получили дополнительные возможности. ... Оболочка Thompson не имела возможностей программирования. Это изменилось с разработкой оболочки Mashey (а позже и оболочки Bourne).
"PWB Shell" впервые появился в середине 1975 года. Он произошел от набора требований и предложений от меня в начале 1975 года при попытке серьезного программирования оболочки. В середине 1975 года оболочка приобрела переменные, в том числе 3, которые были получены из данных по процессам. Вот где появилась идея более обобщенного поиска пути.