Что выбрать – команды BSD или Unix, если они доступны?

Команды вроде ps поставляются с множеством параметров, особенно потому, что они дают возможность выбирать между флажками стиля Unix и BSD. Надеюсь, ты получишь мою мысль.

Итак, когда есть такой вариант, который я должен выбрать для максимальной совместимости во всех Linux-системах? (максимальная совместимость является одним из приоритетов, например)

Я знаю, что стиль Unix довольно очевиден, но по некоторым причинам команды BSD содержат более читаемую информацию (например, заголовки столбцов, колонка CPU и т. Д.). Конечно, пожалуйста, поправьте меня, если я ошибаюсь, но это то, что я чувствовал.

Практически все 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 – принимает флаги AT & Tish и BSDish ps .

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 и ее предшественников.)

В случае сомнений используйте синтаксис SysV. Это было согласовано многими людьми и является де-факто стандартом. Материал BSD либо датируется предысторией, либо является частью некоторой расходящейся ветви (SysV был попыткой прекратить войны Unix, объединив все разрозненные линии под одной крышей).