Lequel choisir - commandes BSD ou de style Unix lorsqu'elles sont disponibles?

14

Les commandes comme psviennent avec beaucoup de paramètres, en particulier parce qu'elles donnent à l'utilisation une option pour choisir entre les drapeaux de style Unix et BSD. J'espère que vous comprenez mon point ici.

Donc, quand une telle option est disponible, que dois-je choisir pour une compatibilité maximale sur tous les systèmes Linux? (la compatibilité max. est une des priorités par exemple)

Je sais que le style Unix est assez évident, mais les commandes BSD pour une raison quelconque incluent des informations plus lisibles (titres de colonne par exemple, colonne CPU, etc.). Bien sûr, veuillez me corriger si je me trompe, mais c'est ce que j'ai ressenti.

c'est moi
la source

Réponses:

17

Presque tous les Linux utilisent des versions GNU des commandes Unix de base originales comme ps, qui, comme vous l'avez noté, prennent en charge les options de style BSD et AT&T.

Étant donné que votre objectif déclaré n'est que la compatibilité entre Linux, cela signifie que la réponse est: «Cela n'a pas d'importance».

Les versions embarquées et autres très petites variantes de Linux utilisent généralement BusyBox au lieu des outils GNU, mais dans le cas de pscela, cela n'affecte vraiment pas la réponse, car la version BusyBox est tellement dépouillée qu'elle ne peut être appelée ni AT & Tish ni BSDish.

Au fil du temps, d'autres systèmes Unixy ont réduit les psdifférences de compatibilité. Mac OS X - qui dérive indirectement de BSD Unix et se comporte généralement de la même manière que BSD Unix - accepte à la fois les psdrapeaux AT & Tish et BSDish .

Solaris / OpenIndiana se comporte également de cette façon, bien que cela soit moins surprenant car il a un historique mixte BSD et AT&T.

FreeBSD, OpenBSD et NetBSD utilisent toujours exclusivement le style BSD.

Plus une boîte Unix est ancienne, plus il est probable qu'elle n'accepte qu'un seul style de drapeaux. Vous pouvez passer en revue les différences sur une telle boîte de la même manière que nous le faisons maintenant: installez les outils GNU, s'ils ne l'ont pas déjà été.

Cela dit, il reste des pièges. psla sortie ne doit généralement pas être analysée dans des scripts qui doivent être portables, par exemple, car les systèmes Unixy varient dans les colonnes disponibles, la quantité de données que le système d'exploitation est prêt à rendre visible aux utilisateurs non root, etc.

(Soit dit en passant, notez que c'est "BSD vs AT&T", pas "BSD vs. Unix". BSD Unix est toujours UNIX®. BSD Unix partage un historique de développement direct avec la branche AT&T d'origine. Ce partage va aussi dans les deux sens. : AT&T et ses successeurs ont ramené les innovations BSD chez eux à plusieurs moments de son histoire. Cette unification dans le temps est en partie due aux efforts de The Open Group et de ses prédécesseurs.)

Warren Young
la source
Même si c'est une excellente explication (et réponse), cela n'aide pas à la question: quel style dois-je choisir d'apprendre?
Jarl
@Jarl: apprenez d'abord POSIX. C'est disponible partout. Découvrez ensuite les variantes étranges utilisées sur les systèmes que vous utilisez le plus. Ignorez le reste.
Warren Young
Dans le cas des psstyles d'argument, lequel (BSD ou Unix) est POSIX, alors?
Jarl
@Jarl: Voir les spécifications . De manière générale, POSIX s'appuie davantage sur SysVish que sur BSD, car POSIX était axé sur l'économie et tous les principaux Unix commerciaux de l'époque étaient des dérivés du système V.
Warren Young
0

En cas de doute, utilisez la syntaxe SysV. Cela a été accepté par beaucoup de gens et c'est la norme de facto. La substance BSD date de la préhistoire ou fait partie d'une branche divergente (SysV était un effort pour mettre fin aux guerres Unix en rassemblant toutes les lignes disparates sous un même toit).

vonbrand
la source
Norme de facto pour Linux, pas Solaris, * BSD, OSX, etc.
chiggsy
Bien sûr, c'est la norme pour Solaris (c'était le premier SysV à sortir, rappelez-vous). Il a été respecté par AIX et HP-UX d'IBM, au moins. Les BSD sont un réconfort d'une époque révolue.
vonbrand
1
Vous avez raison de dire que Solaris est SysV, mon erreur.
chiggsy
3
Upvoted, bien que je remette en question les références désobligeantes à BSD. Ce n'est pas une mauvaise chose de continuer à faire les choses dans le bon sens.
chiggsy
2
-1: Tout d'abord, je pense que vous voulez dire la norme de jure . Pour considérer les options de style SysV comme la norme de facto , vous devez ignorer plusieurs faits d'existence: FreeBSD, OpenBSD et NetBSD. Vous ne pouvez pas les faire sortir de la main avec cet argument de "préhistoire". Deuxièmement, Solaris n'était pas le premier système V. C'était peut -être la première livraison commerciale de SVR4 , mais SVR1 a été développé pour Vaxen et le PDP-11 .
Warren Young