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 pscomando 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, pshavia 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 pscom muito mais opções. A variante BSD optou por manter a sintaxe original, sem liderança -, ae xainda 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 -epara 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 pscomando do Linux começou com opções do tipo BSD, por exemplo, ps aepara 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 psadicionaram 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 -elistam 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 pscomando foi lançada em 1992; este não está disponível online, mas a edição de 1997 é. Para o pscomando, como em muitos outros casos, o POSIX adotou a maneira System V de fazer as coisas.
A pssintaxe 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.
psInvestigar 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.