Qual escolher - comandos BSD ou Unix-style quando disponíveis?

13

Comandos como ps vêm com muitos parâmetros, especialmente porque eles dão ao uso uma opção para escolher entre os flags de estilo Unix e BSD. Eu espero que você consiga meu ponto aqui.

Então, quando há essa opção disponível, qual devo escolher para compatibilidade máxima em todos os sistemas Linux? (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 coluna, por exemplo, coluna de CPU, etc.). Claro, por favor, corrija-me se estiver errado, mas é o que senti.

    
por its_me 15.08.2011 / 05:32

2 respostas

17

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

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

Embutidos e outras variantes muito pequenas do Linux normalmente usam BusyBox ao invés das ferramentas GNU, mas no caso de ps , isso realmente não afeta a resposta, já que a versão do BusyBox é tão despojada que não pode ser chamada de AT & Tish nem BSDish.

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

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.

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

Quanto mais velha for a caixa Unix, mais provável é que ela aceite apenas um estilo de sinalizadores. Você pode passar as diferenças em uma caixa como a que fazemos agora: instalar as ferramentas GNU, se elas ainda não tiverem sido instaladas.

Dito isto, ainda existem armadilhas. A saída ps geralmente não deve ser analisada em scripts que precisam ser portáveis, por exemplo, já 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, note que é "BSD vs. AT & T", não "BSD vs. Unix". O BSD Unix ainda é UNIX®. O BSD Unix compartilha um histórico de desenvolvimento direto com a ramificação AT & A original. Esse compartilhamento também acontece nos dois sentidos: a AT & T e seus sucessores trouxeram as inovações da BSD para casa em vários pontos de sua história. A unificação ao longo do tempo é em parte devido aos esforços do The Open Group e seus predecessores.

    
por 15.08.2011 / 06:10
1

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

    
por 23.01.2013 / 15:44

Tags