Это восходит к нескольким извилистой истории Unix (Википедия имеет упрощенную схему , которая далека от завершения). В частности, какое-то время существовало два основных направления: System V, разработанная AT & T, и BSD, разработанная в Калифорнийском университете в Беркли. Это было в начале 1980-х, задолго до Linux (1991), не говоря уже об Ubuntu (2004). Зачастую эти два потока принимали разные решения, и даже сегодня вы иногда найдете ссылки на варианты или функции «System V» и «BSD».
Эта psкоманда восходит к одному из первых выпусков Unix (ее не было в версии 1, самая ранняя страница руководства, которую я могу найти в Интернете, относится к версии 5 (с.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).
Когда Linux появился на сцене, люди, которые его использовали, часто имели опыт работы с тем или иным вариантом Unix. Иногда Linux делал что-то в стиле System V, иногда в BSD, иногда по-своему, либо исходя из технических соображений, либо исходя из опыта и вкусов тех, кто реализовывал эту функцию. psКоманда Linux начиналась с 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.
psИсследовать исторические различия между тем, как системы со временем внедряют optargs, - значит стоять на краю пропасти. Человек не должен был знать.