Questo risale alla storia un po 'tortuosa di Unix (Wikipedia ha un diagramma semplificato , che è lontano da completo). In particolare, per un po ', c'erano due correnti principali: System V sviluppato da AT&T e BSD sviluppato presso l'Università della California, Berkeley. Ciò avvenne nei primi anni '80, molto prima di Linux (1991), e tanto meno Ubuntu (2004). Spesso queste due correnti hanno preso decisioni diverse e ancora oggi troverete il riferimento occasionale alle varianti o caratteristiche di “Sistema V” e “BSD”.
Il ps
comando risale a una delle prime versioni di Unix (non era nella versione 1, la prima pagina man che posso trovare online è della versione 5 (p.94) nel 1974). All'epoca, ps
c'erano solo alcune opzioni, ad esempio ps a
visualizzavano tutti i processi anziché solo l'utente e ps x
visualizzava i processi senza alcun terminale collegato. Noterai che le opzioni non iniziano con -
: al momento, la convenzione di usare -
per le opzioni non era quasi sistematica come lo è oggi, era principalmente una cosa per i comandi che prendevano i nomi dei file come normali argomenti.
Nel tempo, i vari filoni di Unix si sono estesi ps
con molte più opzioni. La variante BSD ha scelto di mantenere la sintassi originale, senza leader -
, e a
ed x
esistono ancora oggi. La variante di System V ha scelto di adottare la convenzione sintattica di -
for options e ha utilizzato lettere diverse (ad esempio ps -e
per visualizzare tutti i processi). Oracle (precedentemente Sun) Solaris è un esempio di una variante di System V (Solaris fornisce anche un ps
eseguibile separato , in una directory che non è quella predefinita PATH
, per le applicazioni scritte pensando a BSD).
All'epoca in cui Linux è apparso sulla scena, le persone che lo usavano spesso avevano precedenti esperienze su una variante Unix o su un'altra. Linux a volte faceva le cose alla maniera di System V, a volte alla maniera di BSD, a volte a modo suo, sulla base di considerazioni tecniche o sulla base dell'esperienza e dei gusti di chiunque avesse implementato la funzionalità. Il ps
comando di Linux è iniziato con opzioni simili a BSD, ad esempio ps ae
per visualizzare tutti i processi e includere le variabili di ambiente nell'elenco. Nel tempo (alla fine degli anni '90, non ricordo esattamente quando), gli autori delle ps
opzioni aggiunte di Linux per le persone che erano abituate al Sistema V. Quindi oggi ps ax
o ps -e
elencherò tutti i processi sotto Linux, e c'è anche una variabile d'ambiente ( PS_PERSONALITY
) da fareps
si comportano più come le varie vecchie varianti Unix di Unix, per il gusto di vecchi script e persone con abitudini prestabilite.
Alle persone che hanno utilizzato diverse varianti di Unix non piaceva che dovessero modificare i loro programmi e le loro abitudini quando passavano da una variante Unix a un'altra. Quindi c'è stato uno sforzo per standardizzare un sottoinsieme di funzionalità. Ciò ha portato allo standard POSIX (guidato dall'IEEE ), seguito da Ubuntu nel complesso. La prima edizione il cui ambito includeva il ps
comando uscì nel 1992; questo non è disponibile online, ma l' edizione del 1997 lo è. Per il ps
comando, come in molti altri casi, POSIX ha adottato il modo System V di fare le cose.
La ps
sintassi standard del comando è compatibile con System V e POSIX. Inoltre, tale sintassi può essere definita standard perché utilizza -
per impostazione predefinita le opzioni. Alcune opzioni esistono solo in una delle due sintassi; fortunatamente possono essere mescolati nella stessa chiamata.
In generale, "BSD" vs "System V" non ha implicazioni tecniche. Si riferisce alla storia: "BSD" è la scelta fatta da BSD negli anni '80 e oltre, "System V" è la scelta fatta da AT&T e dai loro partner (specialmente Sun). "POSIX" è la scelta fatta dal comitato di standardizzazione IEEE.
ps
Indagare sulle differenze storiche tra come i sistemi implementati nel tempo optargs significa stare ai margini di un abisso che l'uomo non era destinato a conoscere.