Eu li muito no Unix e Linux sobre BSDs e GNU, etc. Mas ainda não entendo quais são as diferenças práticas e reais entre as áreas de usuários do BSD e GNU, apesar do fato de serem frequentemente mencionadas. Alguém pode elaborar?
Ao responder, explique completamente as conexões históricas, tendo em mente que eu não estou vivo há tempo suficiente para ter passado por um momento em que o GNU / Linux não era o UNIX convencional (exceto o OS X).
Respostas:
O termo "userland" pode se referir a muitas coisas em diferentes contextos, mas aqui interpreto "GNU userland" vs "BSD userland" como o conjunto mínimo padrão de programas que acompanham uma distribuição.
A grande diferença principal é que as duas terras do usuário começam com um código fonte completamente diferente. Código-fonte do gato GNU Código-fonte do gato NetBSD . Apenas a partir desse programa de conceito simples, você pode ver que o gato do NetBSD usa sinalizadores de linha de comando tradicionais de uma letra. Os programas GNU tendem a ter sinalizadores de uma letra, mas também as
--something-long
opções de tipo. Os programas GNU também tendem à compatibilidade com POSIX.Essa diferença no código fonte emprestará aos dois usuários diferentes comportamentos em alguns casos.
Também parece que o NetBSD (pelo menos) usa sua própria versão da libc, a biblioteca C padrão. Estou pensando bem aqui, mas libc e links dinâmicos são estranhamente inter-relacionados. Novamente, código-fonte diferente levará a um comportamento diferente.
Eu acho que, como usuário do shell, você descobriria que
ps
agiria diferente els
poderia fornecer uma saída ligeiramente diferente da que você está acostumado. Você precisaria encontrar sinalizadores de linha de comando equivalentes para alguns programas, se você usar o--long-option
tipo de sinalizadores de linha de comando.Historicamente, meu entendimento é que o usuário do BSD descende mais diretamente do Bell Labs Unix V6 e V7, através da porta 32V para o hardware VAX. A área de usuários do GNU é mais recente, escrita pelo menos um pouco em reação às tentativas da AT&T de manter o código em segredo bem guardado no início dos anos 80. Após a alienação do sistema Bell de 1983, a AT&T tentou "monetizar" o Unix. Parte disso foi licenciar o código fonte de uma maneira que impedisse a maioria das pessoas de vê-lo. Richard Stallman e outros tiveram problemas com isso. Seu projeto GNU existia especificamente para criar um sistema do tipo Unix livremente compartilhável.
Enquanto isso, em 1993, a AT&T processou o sistema da Universidade da Califórnia pelo sistema BSD ('B' é Berkeley, onde está localizada a Universidade da Califórnia). As pessoas em Berkeley haviam substituído toda a fonte original da AT&T por um novo código, e esse novo código se tornou o ancestral de pelo menos a terra de usuários do NetBSD. A AT&T e a UCB chegaram a um acordo em 1994, revelado ao público em 2004.
Naturalmente, pelo menos as idéias polinizam, portanto há pelo menos uma similaridade conceitual entre a área de usuário do GNU e o BSD, mas os casos de canto definitivamente diferem.
fonte
sed
engasga com longas linhas de entrada ou segrep
segfaults em dados binários.