Практически все Linux используют версии GNU исходных базовых команд Unix, например ps
, которые, как вы заметили, поддерживают опции в стиле BSD и AT & T.
Поскольку ваша заявленная цель - совместимость только между Linux, это означает, что ответ «это не имеет значения».
Встроенные и другие очень маленькие варианты Linux обычно используют BusyBox вместо инструментов GNU, но в случае ps
, это действительно не влияет на ответ, так как версия BusyBox настолько урезана, что ее нельзя назвать ни AT & Tish, ни BSDish.
Со временем другие системы Unixy уменьшили ps
различия в совместимости. Mac OS X - которая косвенно происходит от BSD Unix и в целом ведет себя почти так же, как BSD Unix - принимает ps
флаги AT & Tish и BSDish .
Solaris / OpenIndiana тоже ведет себя подобным образом, хотя это менее удивительно, поскольку у него смешанная история BSD и AT & T.
FreeBSD, OpenBSD и NetBSD по-прежнему исключительно в стиле BSD.
Чем старше блок Unix, тем более вероятно, что он принимает только один стиль флагов. Различия в таком блоке можно записать так же, как мы делаем сейчас: установите инструменты GNU, если они еще не установлены.
Тем не менее, есть еще ловушки. ps
выходные данные, как правило, не должны анализироваться в сценариях, которые должны быть переносимыми, например, поскольку системы Unixy различаются в зависимости от доступных столбцов, объема данных, которые ОС хочет сделать видимыми для пользователей без полномочий root и т. д.
(Кстати, обратите внимание, что это «BSD vs. AT & T», а не «BSD vs. Unix». BSD Unix по-прежнему UNIX®. BSD Unix делится историей непосредственного развития с оригинальной веткой AT & T. Это совместное использование также идет в обе стороны : AT & T и ее преемники принесли инновации BSD домой на нескольких этапах своей истории. Такое объединение со временем частично объясняется усилиями The Open Group и ее предшественников.)
ps
стилей аргументов, какой из них (BSD или Unix) является POSIX, тогда?В случае сомнений используйте синтаксис SysV. Это было согласовано многими людьми и является стандартом де-факто. Материал BSD либо датируется предысторией, либо является частью некой расходящейся ветви (SysV была попыткой положить конец войнам Unix, собрав все разрозненные линии под одной крышей).
источник