Isso remonta à história um tanto tortuosa do Unix (a Wikipedia tem um diagrama simplificado , que está longe de estar completo). Em particular, por um tempo, houve duas grandes correntes: Sistema V, desenvolvido pela AT&T, e o BSD, desenvolvido na Universidade da Califórnia, em Berkeley. Isso foi por volta do início dos anos 80, muito antes do Linux (1991), e muito menos do Ubuntu (2004). Freqüentemente, essas duas correntes tomavam decisões diferentes e, ainda hoje, você encontrará referências ocasionais às variantes ou recursos do “System V” e “BSD”.
O ps
comando data de um dos primeiros lançamentos do Unix (não estava na versão 1, a primeira página do manual que posso encontrar online é da versão 5 (p.94) em 1974). Na época, ps
havia apenas algumas opções, por exemplo ps a
, exibia todos os processos, em vez de apenas o usuário, eps x
exibia processos sem terminal conectado. Você notará que as opções não começam com -
: na época, a convenção de usar -
para opções não era quase sistemática como é hoje, era principalmente uma coisa para comandos que usavam nomes de arquivos como argumentos normais.
Com o tempo, as várias vertentes do Unix se estenderam ps
com muito mais opções. A variante BSD optou por manter a sintaxe original, sem liderança -
, a
e x
ainda existe hoje. A variante do System V optou por adotar a convenção sintática de -
for options e usou letras diferentes (por exemplo, ps -e
para exibir todos os processos). O Oracle (anteriormente Sun) Solaris é um exemplo de uma variante do System V (o Solaris também envia umaps
executável , em um diretório que não está no padrão PATH
, para aplicativos escritos com o BSD em mente).
Na época em que o Linux entrava em cena, as pessoas que o usavam costumavam ter experiência anterior com uma variante do Unix ou outra. Às vezes, o Linux fazia as coisas do modo System V, às vezes do BSD, às vezes do seu próprio jeito, com base em considerações técnicas ou com base na experiência e gostos de quem implementou o recurso. O ps
comando do Linux começou com opções do tipo BSD, por exemplo, ps ae
para exibir todos os processos e incluir variáveis de ambiente na listagem. Com o tempo (no final dos anos 90, não me lembro exatamente quando), os autores do Linux ps
adicionaram opções para pessoas que estavam acostumadas com o System V. Portanto, hoje eles se comportam mais como várias variantes antigas do Unix, por causa de scripts antigos e pessoas com hábitos definidos.ps ax
ou ps -e
listam todos os processos no Linux, e há até uma variável de ambiente ( PS_PERSONALITY
) para fazerps
As pessoas que usavam várias variantes do Unix não gostavam que precisassem modificar seus programas e hábitos ao mudar de uma variante do Unix para outra. Portanto, houve um esforço para padronizar um subconjunto de funcionalidades. Isso levou ao padrão POSIX (liderado pelo IEEE ), que o Ubuntu geralmente segue. A primeira edição cujo escopo incluía o ps
comando foi lançada em 1992; este não está disponível online, mas a edição de 1997 é. Para o ps
comando, como em muitos outros casos, o POSIX adotou a maneira System V de fazer as coisas.
A ps
sintaxe padrão do comando é compatível com o System V e POSIX. Além disso, pode-se dizer que essa sintaxe é padrão porque usa -
para introduzir opções por padrão. Algumas opções existem apenas em uma das duas sintaxes; Felizmente, eles podem ser misturados na mesma chamada.
De um modo geral, "BSD" vs "Sistema V" não tem nenhuma implicação técnica. Refere-se à história: "BSD" é a escolha que o BSD fez nos anos 80 e nos anos seguintes, "System V" é a escolha que a AT&T e seus parceiros (principalmente a Sun) fizeram. "POSIX" é a escolha que o comitê de padronização do IEEE fez.
ps
Investigar as diferenças históricas entre como os sistemas, ao longo do tempo, implementaram as opções é ficar à beira de um abismo que o homem não deveria saber.