stringtranslate.com

Корпус печатной платы

Оболочка 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 , поскольку требовала нового системного вызова udata(2), который позволял login(1)задать имя входа, каталог входа ( $s ) и TTY ( $t ), чтобы получить их.sh(1)

Примечательные особенности

В оболочке 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. [ необходима цитата ]

Смотрите также

Ссылки

  1. ^ abcd Mashey, John R. (1976-10-13). «Использование командного языка в качестве языка программирования высокого уровня». Сан-Франциско, Калифорния, США : Труды 2-й Международной конференции по программной инженерии. стр. 169–176. Архивировано из оригинала 12 апреля 2020 г. Получено 12 апреля 2020 г. В дополнение к этим переменным [$n, $p, $r, $s и $t] предоставляется следующее: $$ содержит 5-значное число, которое является уникальным номером процесса текущей оболочки. В некоторых случаях необходимо знать номер процесса, например, чтобы завершить его. Однако на сегодняшний день его наиболее распространенным применением было создание уникальных имен для временных файлов.
  2. ^ Ликич, Владимир (28 сентября 2018 г.). «Понимание Bash: элементы программирования». Linux Journal. Архивировано из оригинала 21.12.2018 . Получено 31.12.2018 . Оригинальная оболочка Thompson, оболочка Mashey и оболочка Bourne назывались sh, и они перекрывали или заменяли друг друга в 1970–1976 годах, поскольку они были улучшены и получили дополнительные возможности. ... Оболочка Thompson не имела возможностей программирования. Это изменилось с разработкой оболочки Mashey (а позже и оболочки Bourne).
  3. ^ Уайлс, Джек (13 октября 2011 г.). Руководство TechnoSecurity по электронному раскрытию и цифровой криминалистике: всеобъемлющее руководство. Elsevier. ISBN 9780080558813. Получено 31 декабря 2018 г. – через Google Books.
  4. ^ Mashey, John R. (27 января 1999 г.) [1986]. Toomey, Warren (ред.). "Re: История Shell, истинные факты, но длинные | Группы новостей: net.unix-wizards". Архивировано из оригинала 2016-10-06 . Получено 2018-12-31 . "PWB Shell" впервые появился в середине 1975 года. Он произошел от набора требований и предложений от меня в начале 1975 года при попытке серьезного программирования оболочки. В середине 1975 года оболочка приобрела переменные, в том числе 3, которые были получены из данных по процессам. Вот где появилась идея более обобщенного поиска пути.
  5. ^ Чорафас, Димитрис Н. (1986). Какой Unix? : AT&T, IBM и другие носители стандартов. McGraw-Hill . ISBN 9780070108790. Архивировано из оригинала 2018-12-31 . Получено 2018-12-31 .
  6. ^ Iftekher, Mohammad Forhad (10 ноября 2015 г.). "Evolution Of Unix / Linux Shells - Unixmen". Unixmen.com . Архивировано из оригинала 21 июля 2019 г. . Получено 31 декабря 2018 г. .

Внешние ссылки