Qual escolher - comandos no estilo BSD ou Unix, quando disponíveis?

14

Comandos como psvêm com muitos parâmetros, especialmente porque eles dão ao uso uma opção para escolher entre os sinalizadores de estilo Unix e BSD. Espero que você entenda meu ponto aqui.

Então, quando houver uma opção disponível, qual devo escolher para obter a compatibilidade máxima em todos os sistemas Linux? (a compatibilidade máxima é uma das prioridades, por exemplo)

Eu sei que o estilo Unix é bastante óbvio, mas os comandos BSD, por algum motivo, incluem informações mais legíveis (títulos de colunas, por exemplo, coluna da CPU, etc.). Claro, por favor, corrija-me se estiver errado, mas foi o que senti.

wsou eu
fonte

Respostas:

17

Praticamente todos os Linux usam versões GNU dos comandos originais do Unix ps, como o que, como você observou, suporta as opções de estilo BSD e AT&T.

Como seu objetivo declarado é apenas a compatibilidade entre Linux, isso significa que a resposta é: "Não importa".

Embutidas e outras variantes muito pequenas do Linux geralmente usam o BusyBox em vez das ferramentas GNU, mas, no caso ps, isso realmente não afeta a resposta, já que a versão do BusyBox é tão simplificada que não pode ser chamada de AT & Tish nem BSDish.

Com o tempo, outros sistemas Unixy reduziram as psdiferenças de compatibilidade. O Mac OS X - que deriva indiretamente do BSD Unix e, em geral, se comporta de maneira mais semelhante ao BSD Unix ainda - aceita os pssinalizadores AT & Tish e BSDish .

O Solaris / OpenIndiana também se comporta dessa maneira, embora isso seja menos surpreendente porque tem uma história mista de BSD e AT&T.

O FreeBSD, o OpenBSD e o NetBSD ainda seguem exclusivamente o estilo BSD.

Quanto mais antiga for uma caixa Unix, maior a probabilidade de ela aceitar apenas um estilo de sinalizadores. Você pode encobrir as diferenças nessa caixa da mesma maneira que fazemos agora: instale as ferramentas GNU, se elas ainda não estiverem instaladas.

Dito isto, ainda existem armadilhas. psa saída geralmente não deve ser analisada em scripts que precisam ser portáveis, por exemplo, uma vez que os sistemas Unixy variam em quais colunas estão disponíveis, a quantidade de dados que o sistema operacional está disposto a tornar visível para usuários não-root etc.

(A propósito, observe que é "BSD vs. AT&T", não "BSD vs. Unix". O BSD Unix ainda é o UNIX®. O BSD Unix compartilha um histórico de desenvolvimento direto com o ramo original da AT&T. Esse compartilhamento também ocorre nos dois sentidos : A AT&T e seus sucessores trouxeram as inovações da BSD de volta para casa em vários pontos de sua história. Essa unificação ao longo do tempo se deve em parte aos esforços do The Open Group e de seus antecessores.)

Warren Young
fonte
Embora essa seja uma ótima explicação (e resposta), ela não ajuda na pergunta: Que estilo devo escolher para aprender?
Jarl
@Jarl: Aprenda primeiro o POSIX. Está disponível em qualquer lugar. Em seguida, aprenda quais variantes estranhas estão sendo usadas nos sistemas que você mais usa. Ignore o resto.
21816 Warren Young
No caso de psestilos de argumento, qual deles (BSD ou Unix) é POSIX, então?
Jarl
@Jarl: Veja as especificações . De um modo geral, o POSIX se inclina mais SysVish do que o BSD, já que o POSIX era econômico, e todos os principais Unixes comerciais da época eram derivados do System V.
Warren Young
0

Em caso de dúvida, use a sintaxe SysV. Isso foi acordado por muitas pessoas e é o padrão de fato. O material do BSD data da pré-história ou faz parte de algum ramo divergente (o SysV foi um esforço para acabar com as guerras do Unix, colocando todas as linhas díspares sob o mesmo teto).

vonbrand
fonte
De facto padrão para Linux, não Solaris, BSD *, OSX, etc.
chiggsy
Claro que é o padrão do Solaris (esse foi o primeiro SysV a ser lançado, lembre-se). Ele foi respeitado pelo AIX e HP-UX da IBM, pelo menos. Os BSDs são um destaque de uma época passada.
vonbrand
Você está certo sobre o Solaris ser SysV, meu erro.
chiggsy
3
Voto positivo, embora eu questione as referências depreciativas ao BSD. Não é uma coisa ruim continuar fazendo as coisas da maneira certa.
chiggsy
1
-1: Primeiro, acho que você quer dizer padrão de jure . Para considerar as opções de estilo SysV o padrão de fato , você teria que ignorar vários fatos da existência: FreeBSD, OpenBSD e NetBSD. Você não pode afastá-los da existência com esse argumento "pré-histórico". Em segundo lugar, Solaris foi não o primeiro V. Sistema Ele pode ter sido a primeira remessa comercial de SVR4 , mas SVR1 foi desenvolvido para Vaxen eo PDP-11 .
Warren Young.