Diese stammt aus der etwas gewundenen Geschichte von Unix (Wikipedia hat ein vereinfachtes Diagramm , das ist weit von vollständig). Insbesondere gab es eine Zeit lang zwei Hauptströmungen: das von AT & T entwickelte System V und das an der University of California in Berkeley entwickelte BSD . Dies war um die frühen 1980er Jahre, lange vor Linux (1991), geschweige denn Ubuntu (2004). Oft haben diese beiden Strömungen unterschiedliche Entscheidungen getroffen, und auch heute finden Sie gelegentlich Hinweise auf Varianten oder Merkmale von „System V“ und „BSD“.
Der psBefehl stammt aus einer der ersten Versionen von Unix (er war nicht in Version 1, die früheste Online-Manpage, die ich finden kann, stammt aus Version 5 (S.94) im Jahr 1974). psHatte zu der Zeit nur ein paar Optionen, würde zum Beispiel ps aalle Prozesse statt nur des Benutzers ps xanzeigen und würde Prozesse ohne angeschlossenes Terminal anzeigen. Sie werden bemerken, dass die Optionen nicht mit beginnen -: Zu der Zeit war die Konvention der Verwendung -von Optionen nicht so systematisch wie heute, es war meistens eine Sache für Befehle, die Dateinamen als normale Argumente verwendeten.
Im Laufe der Zeit wurden die verschiedenen Stränge von Unix um psviele weitere Optionen erweitert. Die BSD - Variante wählte die ursprüngliche Syntax, ohne führenden zu behalten -, und aund xexistiert noch heute. Die System V-Variante hat die syntaktische Konvention von -for options übernommen und verschiedene Buchstaben verwendet (z. B. ps -eum alle Prozesse anzuzeigen). Oracle (ehemals Sun) Solaris ist ein Beispiel für eine System V-Variante (Solaris psliefert PATHfür Anwendungen, die unter Berücksichtigung von BSD geschrieben wurden, auch eine separate ausführbare Datei in einem nicht standardmäßig festgelegten Verzeichnis aus ).
Zu der Zeit, als Linux auf den Markt kam, hatten die Leute, die es nutzten, oft schon Erfahrung mit der einen oder anderen Unix-Variante. Linux hat die Dinge manchmal nach System V, manchmal nach BSD und manchmal nach eigenem Ermessen gemacht, entweder aufgrund technischer Überlegungen oder aufgrund der Erfahrung und des Geschmacks derer, die das Feature implementiert haben. Der Linux- psBefehl begann mit BSD-ähnlichen Optionen, z. B. ps aeum alle Prozesse anzuzeigen und Umgebungsvariablen in die Auflistung aufzunehmen. Im Laufe der Zeit (Ende der 1990er Jahre, ich weiß nicht genau, wann) haben die Autoren von Linux psOptionen für Benutzer hinzugefügt, die an System V gewöhnt waren. Daher werden heute entweder alle Prozesse unter Linux aufgelistet ps axoder ps -ees gibt sogar eine Umgebungsvariable ( PS_PERSONALITY) zu machenps verhalten sich eher wie verschiedene Unix-alte Unix-Varianten, zum Wohle alter Skripte und Menschen mit festgelegten Gewohnheiten.
Menschen, die mehrere Unix-Varianten verwendeten, mochten es nicht, dass sie ihre Programme und Gewohnheiten ändern mussten, wenn sie von einer Unix-Variante zu einer anderen wechselten. Daher wurde versucht, eine Teilmenge der Funktionalität zu standardisieren. Dies führte zum POSIX- Standard (angeführt von der IEEE ), dem Ubuntu im Großen und Ganzen folgt. Die erste Ausgabe, deren Umfang den psBefehl umfasste , erschien 1992; Dieser ist nicht online verfügbar, die Ausgabe von 1997 jedoch. Für den psBefehl verwendete POSIX wie in vielen anderen Fällen die System V-Methode.
Die psStandardsyntax des Befehls ist sowohl mit System V als auch mit POSIX kompatibel. Darüber hinaus kann diese Syntax als Standard bezeichnet werden, da standardmäßig -Optionen eingeführt werden. Einige Optionen sind nur in einer der beiden Syntaxarten verfügbar. Zum Glück können sie im selben Anruf gemischt werden.
Im Allgemeinen hat „BSD“ gegenüber „System V“ keine technischen Auswirkungen. Es bezieht sich auf die Geschichte: „BSD“ ist die Wahl, die BSD in den 1980er Jahren getroffen hat, und so weiter. „System V“ ist die Wahl, die AT & T und ihre Partner (insbesondere Sun) getroffen haben. „POSIX“ ist die Wahl, die das IEEE-Standardisierungskomitee getroffen hat.
psLaufe der Zeit implementiert wurden, bedeutet, am Rande eines Abgrunds zu stehen, den man nicht wissen sollte.