В чем разница между стандартным синтаксисом и синтаксисом BSD?

Я видел много команд, которые принимают «синтаксис BSD», а также их стандартный синтаксис. Возьмите команду ps для одного примера:

To see every process on the system using standard syntax:
      ps -e
      ps -ef
      ps -eF
      ps -ely

To see every process on the system using BSD syntax:
      ps ax
      ps axu

Итак, в чем разница между этими двумя маршрутами? В общем, когда они говорят в синтаксисе BSD, какие элементы я должен помнить? Является ли этот синтаксис только для тех команд, которые они также находятся в BSD?

1
задан 18 June 2014 в 20:03

3 ответа

Это относится к несколько извилистой истории Unix (Wikipedia имеет упрощенную диаграмму, которая далека от завершения). В частности, в течение некоторого времени существовали два основных направления: система V, разработанная AT & amp; T и BSD, разработанная Университетом Беркли. Это было в начале 1980-х годов, задолго до Linux (1991), не говоря уже о Ubuntu (2004). Часто эти два тока принимали разные решения, и даже сегодня вы найдете ссылки на варианты или функции «System V» и «BSD».

Команда ps восходит к одной из первых релизы Unix (это было не в версии 1, самая ранняя страница man, которую я могу найти в Интернете, - это Unix (стр.94) в 1974 году). В то время ps просто было несколько опций, например ps a отобразило бы все процессы, а не только пользователя, а ps x отобразит процессы без присоединения терминала. Вы заметите, что параметры не начинаются с -: в то время соглашение об использовании - для параметров не было почти систематическим, как сегодня, это было главным образом для команд, которые взяли файл имена в качестве обычных аргументов.

С течением времени различные нити Unix расширены ps со многими дополнительными параметрами. Вариант BSD решил сохранить исходный синтаксис, при этом ведущие - и a и x все еще существуют. Вариант System V решил принять синтаксическое соглашение - для параметров и использовал разные буквы (например, ps -e для отображения всех процессов). Oracle (ранее Sun) Solaris является примером варианта System V (Solaris также отправляет отдельный исполняемый файл ps в каталог, который не находится по умолчанию PATH, для приложений, написанных с учетом BSD). [!d9 ]

В то время, когда Linux вышла на сцену, люди, которые ее использовали, часто имели предыдущий опыт одного варианта Unix. Linux иногда делал вещи System V way, иногда BSD, иногда по-своему, либо на основе технических соображений, либо на основе опыта и вкусов тех, кто реализовал эту функцию. Команда Linux ps запускалась с BSD-подобными опциями, например. ps ae для отображения всех процессов и включения переменных среды в список. Со временем (в конце 1990-х годов я точно не помню, когда), авторы Linux ps добавили опции для людей, которые были использованы в System V. Таким образом, сегодня либо ps ax, либо ps -e перечислят все процессы в Linux, и есть даже переменная среды (PS_PERSONALITY), чтобы сделать ps более похожим на различные Unix-варианты Unix для старых скриптов и людей с установленными привычками.

Люди, которые использовали несколько вариантов Unix не понравилось, что им пришлось бы модифицировать свои программы и свои привычки при переключении с одного варианта Unix на другой. Таким образом, была попытка стандартизировать подмножество функциональности. Это привело к стандарту Solaris (во главе с упрощенной диаграммой ), что и следует по Ubuntu. Первое издание, объем которого включал команду ps, вышел в 1992 году; этот вариант недоступен в Интернете, но издание 1997 года. Для команды ps, как и во многих других случаях, POSIX использовал способ System V.

Стандартный синтаксис команды ps - это тот, который совместим как с System V, так и с POSIX. Кроме того, этот синтаксис можно назвать стандартным, поскольку он использует - для введения параметров по умолчанию. Некоторые параметры существуют только в одном из двух синтаксисов; к счастью, их можно смешивать по одному и тому же вызову.

Вообще говоря, «BSD» vs «System V» не имеет никаких технических последствий. Это относится к истории: «BSD» - это любой выбор BSD, сделанный в 1980-х годах и около того, «System V» - это любой выбор ATT и их партнеров (особенно Sun). «POSIX» - это какой бы ни был выбран комитет по стандартизации IEEE.

17
ответ дан 24 May 2018 в 06:32

Синтаксис «стандартный», о котором вы говорите, фактически является операционной системой GNU, которая была разработана в 1980-х годах. Утилиты и философия, основанные на GNU, были объединены с ядром Linux для разработки большинства современных дистрибутивов Linux (включая Ubuntu).

Операционная система BSD была разработана в конце 1970-х годов, независимо от GNU, а затем разветвленные в современные дневные версии, такие как FreeBSD или OpenBSD.

Оба GNU и BSD вдохновлены Unix, и у них немного разные философии, синтаксис и т. д.

2
ответ дан 24 May 2018 в 06:32

Coreutils Ubuntu - это коллекция поддерживаемых GNU приложений, которая включает в себя всю нагрузку (посмотрите на apt-cache show coreutils). У BSD есть свои версии (GNU не совместим с лицензией BSD).

0
ответ дан 24 May 2018 в 06:32

Другие вопросы по тегам:

Похожие вопросы: