Eu já vi muitos comandos que aceitam uma "sintaxe BSD", bem como sua sintaxe padrão. Tome o ps
comando para um exemplo:
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system using BSD syntax:
ps ax
ps axu
Então, qual é a diferença entre essas duas rotas? Em geral, quando dizem na sintaxe do BSD, quais elementos devo lembrar? Essa sintaxe é apenas para os comandos que eles estão no BSD também?
command-line
syntax
Mohammad Reza Rezwani
fonte
fonte
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.Respostas:
Qual é a diferença entre o MS Office e o LibreOffice? Entre o Firefox e o Chrome?
Eles fazem aproximadamente a mesma coisa, mas são de pessoas diferentes, com objetivos ligeiramente diferentes.
Talvez a melhor pergunta é por que as distribuições BSD, Linux, OSX e Unix compartilhar tão muitos comandos? Isso se resume à conformidade com POSIX . O POSIX é basicamente um conjunto de padrões para sistemas operacionais semelhantes ao Unix; estipula a API principal, os comandos e como esses comandos devem funcionar.
No caso de
ps
(um comando estipulado pelo POSIX), certos argumentos são exigidos. Estes incluem os BSD. Todos os comandos derivados do POSIX têm suas próprias páginas de manual, mas precisam de uma instalação separada. Paraps
:Então, por que o BSD não está usando o nosso
ps
(ou vice-versa)?ps
pacote (procps
vejadpkg -S $(which ps)
:) é um garfo de outroprocps
pacote . Ambos são licenciados pela GPL. Isso é incompatível com a licença do BSD, portanto não pode ser incluído lá. ( Podemos incluir BSDs, mas não precisamos).ps
é bastante específico do kernel. Eu acho que eles são tecnicamente incompatíveis.E quanto a outros aplicativos?
A maioria dos comandos para conformidade com POSIX vem do
coreutils
pacote do Ubuntu . Este pacote representa o GNU no GNU / Linux e também possui licença GPL. O BSD envia suas próprias versões licenciadas compatíveis com o BSD que aderem ao POSIX, mas não são necessariamente as mesmas que as do GNU.ps
não é o único comando POSIX que não é GNU . Existem muitos deles.Enquanto lidero, por que deveriam ser? Eles são de pessoas diferentes há muito, muito tempo. Essa é a resposta curta aqui.
fonte
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 exemplops 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
ex
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ãoPATH
, 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 Linuxps
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
oups -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 ops
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.
fonte
A sintaxe 'padrão' a que você está se referindo é, na verdade, o sistema operacional GNU desenvolvido na década de 1980. Os utilitários e a filosofia baseados no GNU foram combinados com o kernel do Linux para desenvolver as distribuições mais modernas do Linux (incluindo o Ubuntu).
O sistema operacional BSD foi desenvolvido no final da década de 1970, independente do GNU, e posteriormente ramificado para versões modernas, como FreeBSD ou OpenBSD.
Tanto o GNU quanto o BSD são inspirados no Unix e possuem filosofias, sintaxe um pouco diferentes.
fonte
O coreutils do Ubuntu é uma coleção de aplicativos mantidos pelo GNU que inclui uma grande quantidade de coisas (veja o apt-cache show coreutils). Os BSDs têm suas próprias versões (o GNU não é compatível com a licença BSD).
fonte