В чем разница между стандартным синтаксисом и синтаксисом 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?

21
задан 18 June 2014 в 19:03

4 ответа

Каково различие между MS Office и LibreOffice? Между Firefox и Chrome?
Они делают примерно то же самое, но они различными людьми с немного отличающимися целями.

Возможно, лучший вопрос состоит в том, почему делают BSD, Linux, OSX и дистрибутивы Unix совместно используют столько команд? Это сводится к соответствию POSIX. POSIX является в основном рядом стандартов для подобных Unix операционных систем; это предусматривает базовый API, команды и как те команды должны работать.

В случае ps (предусмотренная POSIX команда) потребованы, определенные аргументы. Они включают эти BSD. Все полученные из POSIX команды имеют свои собственные страницы справочника, но им нужна отдельная установка. Для ps:

sudo apt-get install manpages-posix
man 1posix ps

Итак, почему использование BSD нашего не ps (или наоборот)?

  • Наш ps пакет (procps см.: dpkg -S $(which ps)) ветвление другого procps пакет. Оба это лицензируемый GPL. Это является несовместимым с лицензией BSD, так не может быть включен там. (Мы могли включать BSD's, но не нуждаемся к).
  • ps справедливо конкретное ядро. Я считаю, что они являются технически несовместимыми.

Что относительно других приложений?

Большинство команд для соответствия POSIX прибывает из Ubuntu coreutils пакет. Этот пакет представляет GNU в GNU/Linux, и это также - лицензируемый GPL. BSD поставляет свои собственные BSD-compatible-licensed, которые придерживаются POSIX, но являются не обязательно полностью тем же как их дубликатами GNU.

ps не единственная команда POSIX, которая не является GNU. Существуют загрузки их.

Когда я веду с, почему они должны быть? Они различными людьми по очень, очень долгое время. Это - короткий ответ здесь.

18
ответ дан 18 June 2014 в 19:03

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

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

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

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

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

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

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

20
ответ дан 18 June 2014 в 19:03

coreutils Ubuntu является набором сохраняемых GNU приложений, что inclues целая загрузка материала (смотрят на шоу способного кэша coreutils). BSDs имеют свои собственные версии (GNU не совместим с лицензией BSD).

0
ответ дан 18 June 2014 в 19:03

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

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

И GNU и BSD вдохновлены Unix, и у них есть немного отличающиеся основные положения, синтаксис, и т.д.

2
ответ дан 18 June 2014 в 19:03

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

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