Isso remonta à história um tanto tortuosa de Unix (a Wikipédia tem um diagrama simplificado , que é agora from complete). Em particular, por um tempo, havia duas correntes principais: System V desenvolvido pela AT & T, e BSD desenvolvido pela Universidade de Berkeley. Isso foi em torno do início dos anos 80, muito antes do Linux (1991), e muito menos do Ubuntu (2004). Frequentemente, essas duas correntes tomam decisões diferentes e, até hoje, você encontrará referências ocasionais a variantes ou recursos “System V” e “BSD”.
O comando ps
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 on-line é de versão 5 (p.94) em 1974). Na época, ps
tinha apenas algumas opções, por exemplo, ps a
exibia todos os processos em vez de apenas o usuário e ps x
exibia processos sem nenhum terminal conectado. Você notará que as opções não começam com -
: no momento, a convenção de usar -
para opções não era tão sistemática quanto é hoje, era principalmente uma coisa para comandos que captavam arquivos nomes como argumentos normais.
Com o tempo, as várias vertentes do Unix estenderam ps
com muito mais opções. A variante BSD optou por manter a sintaxe original, sem liderança -
, e a
e x
ainda existem hoje. A variante do System V escolheu adotar a convenção sintática de -
para opções e usou letras diferentes (por exemplo, ps -e
para exibir todos os processos). Oracle (anteriormente Sun) Solaris é um exemplo de uma variante do System V (O Solaris também envia um executável ps
separado, em um diretório que não está no padrão PATH
, para aplicativos escritos com o BSD em mente).
No momento em que o Linux entrou em cena, as pessoas que o usavam normalmente tinham experiências anteriores de uma ou outra variante do Unix. O Linux às vezes fazia as coisas do jeito System V, às vezes do jeito BSD, às vezes do seu próprio jeito, seja baseado em considerações técnicas ou baseado na experiência e gostos de quem quer que implementasse o recurso. O comando ps
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 das opções ps
do Linux adicionaram opções para pessoas que estavam acostumadas com o System V. Então, ps ax
ou ps -e
listará todos os processos sob Linux, e há até mesmo uma variável de ambiente ( PS_PERSONALITY
) para fazer o ps
se comportar mais como várias variantes Unix antigas do Unix, por causa de scripts antigos e pessoas com hábitos definidos.
As pessoas que usaram várias variantes do Unix não gostaram que tivessem que modificar seus programas e seus hábitos quando mudavam de uma variante do Unix para outra. Então, houve um esforço para padronizar um subconjunto de funcionalidades. Isso levou ao padrão POSIX (liderado pelo IEEE ), que Ubuntu em geral segue. A primeira edição cujo escopo incluía o comando ps
foi lançado em 1992; este não está disponível online, mas a edição de 1997 é. Para o comando ps
, como em muitos outros casos, o POSIX adotou a maneira do System V de fazer as coisas.
A sintaxe padrão do comando ps
é compatível com o System V e o POSIX. Além disso, essa sintaxe pode ser considerada 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 "System V" não tem nenhuma implicação técnica. Refere-se à história: “BSD” é qualquer escolha BSD feita nos anos 80 e por aí, “System V” é qualquer escolha que a ATT e seus parceiros (especialmente a Sun) fizeram. "POSIX" é qualquer escolha que o comitê de padronização do IEEE tenha feito.