Todos os comandos do Unix foram reescritos no Linux?


Respostas:


93

Parece que você está confundindo duas partes muito diferentes do sistema operacional. É compreensível, porque eles são frequentemente referidos de forma intercambiável, mas tecnicamente incorreta; portanto, sua pergunta se baseia em uma premissa defeituosa. Para explorar completamente e, com sorte, responder à pergunta que você provavelmente deseja fazer, é necessária uma breve lição de história.

Primeiro, havia o UNIX. Basicamente, naqueles dias, o UNIX significava o Sistema AT&T UNIX , que veio primeiro. Mas o AT&T UNIX tornou-se não-livre, então Richard Stallman iniciou o projeto GNU para escrever um sistema Unix que era gratuito . Portanto, o nome Gnu não é Unix , abreviado GNU. Os planos para o GNU foram tornados públicos em 1983 e o desenvolvimento começou em 1984 .

No início dos anos 90, o GNU havia reimplementado a maioria dos utilitários UNIX do zero. A Wikipedia lista alguns componentes do sistema geral que não foram reescritos (TeX, o Sistema X Window e o microkernel Mach são mencionados como exemplos de componentes que não foram reescritos), mas principalmente, as ferramentas da terra do usuário foram reescritas do zero para atender o objetivo de evitar a reutilização de qualquer código da AT&T (ou melhor, não gratuito), além de expandir seus recursos adicionando opções de linha de comando. Como resultado, os utilitários GNU eram regularmente mais poderosos do que as ferramentas das quais eles tiravam sua inspiração original.

Nesse ponto, ainda faltava ao GNU um componente vital: um kernel do sistema operacional , que permitia que tudo funcionasse em um computador real que não estivesse executando outro sistema operacional. Em 1991, Linus Torvalds começou a trabalhar em um projeto de brinquedo que acabou se tornando conhecido como Linux. Era basicamente um projeto escolar para aprender sobre a então nova CPU Intel 80386 de 32 bits e começou extremamente simples, mas acabou se transformando em um kernel de sistema operacional realmente utilizável. Mas não possuía nenhum software da terra do usuário; O Linux por si só não fornece shell, nenhum recurso de inicialização do sistema além da inicialização do kernel, nenhum editor de texto, interface gráfica, nada. O núcleo é como um motor de carro; essencial para fazer um carro útil, mas inútil por si só (para um carro útil, você precisa de coisas como rodas, transmissão, direção, um lugar para o motorista sentar-se, um tanque de combustível ou outro estoque de energia, etc.). O kernel do Linux acabou sendo distribuído sob a GNU General Public License, o mesmo que o software GNU .

Então as pessoas começaram a emparelhar os dois. Você obteria uma terra de usuário semelhante ao Unix, juntamente com um kernel baseado em idéias do Unix (incluindo uma semelhança próxima com POSIX ), completo com o código-fonte que você pode cortar do jeito que quiser, e não custou nada . Especialmente antes que as distribuições Linux se tornassem comuns, era preciso um pouco de ajustes para que as coisas funcionassem, mas estava terminado o suficiente para ser um pouco utilizável por aqueles que estavam dispostos a gastar algum tempo com isso.

Atualmente, o GNU fornece um kernel próprio. Você provavelmente nunca ouviu falar, mas chama-se GNU Hurd . Mas Hurd não existia no início dos anos 90, quando o Linux começou a ganhar força entre entusiastas e consertadores, por isso foi a combinação do kernel do Linux e uma região de usuários principalmente do GNU que chamou mais a atenção dos desenvolvedores.

Atualmente, muitos sistemas Unix instalam ou permitem que o administrador instale facilmente partes da área de usuário do GNU. Você pode ver coisas como o GNU bash, a GNU Compiler Collection, a biblioteca GNU C (vanilla ou corrigida) e assim por diante, em um sistema que não seja o GNU.

Para piorar ainda mais, alguns sistemas usam o kernel do Linux, mas nenhum usuário do GNU. Para um exemplo amplamente usado disso, considere o Android OS , que é basicamente o kernel do Linux associado a uma área de usuário personalizada.

Isso é importante porque esbate significativamente a linha entre o GNU, Linux e os vários Unixes ( existe apenas um UNIX , mas existem muitos Unixes e ainda mais sistemas operacionais semelhantes ao Unix ). Quando você está perguntando sobre o Linux, realmente está perguntando frequentemente sobre o sistema GNU / Linux. Mas considere o Debian GNU / kFreeBSD , que executa uma área de usuário GNU no topo do kernel do FreeBSD, sem usar o Linux. Ou, por exemplo, Solaris, no qual você pode instalar facilmente vários pacotes GNU, incluindo, por exemplo, coreutils . Eu acho que o Mac OS X também é fornecido com partes da área de usuário do GNU. Ou considere o Android mencionado acima.

No final, um sistema GNU utilizável pode executar código não-GNU, e um sistema não-GNU pode executar código GNU, mas os utilitários GNU não contêm código não-GNU.


1
A última vez que usei o FreeBSD (anos atrás), ele não usava muitas ferramentas GNU, mas seu próprio conjunto - por exemplo, o BSD make em vez do GNU make.
Reinierpost

5
O @reinierpost OSX é muito semelhante - uma instalação simples contém principalmente versões de BSD, mas o GNU coreutils e similares estão facilmente disponíveis no MacPorts e outros. XCode utiliza LLVM, mas também gcc. É complicado :)
MattDMo

1
@reinierpost make não é tão ruim de substituir. O compilador C é um pouco mais envolvido. Pelo menos o FreeBSD 8.0 usa o GCC como seu compilador padrão ; especificamente versão 4.2.1. Os "problemas de licenciamento" mencionados para impedir a integração de versões mais recentes no sistema base provavelmente se referem à mudança do GPL2 + para o GPL3 +, mas não tenho certeza.
um CVn 01/08/19

3
@ hunter2 Parece que não era necessário, com base na contagem de votos até agora. ;) Também não me propus a escrever uma história completa. O Minix desempenhou um papel importante como um sistema de desenvolvimento e bootstrap do Linux antes que o Linux se tornasse auto-hospedado, mas teve pouca influência, por exemplo, no relacionamento entre Linux, GNU e o UNIX original, que é mais parecido com o que a questão se refere.
um CVn 02/08/19

3
@ hunter2 Se fôssemos seguir esse caminho, é absolutamente verdade que o UNIX certamente também não foi o primeiro. Mas, com o objetivo de responder à pergunta, essa parecia uma aproximação suficientemente boa. A resposta em uma única frase teria sido algo como "basicamente tudo o UNIX, exceto o TeX e o X que você encontra em um sistema Linux, foi reescrito como parte do GNU", mas acho que o contexto adicional agrega valor, mesmo que a resposta seja significativamente mais longa do que absolutamente necessário - e a resposta ainda está longe de cobrir todos os detalhes.
um CVn 02/08/13
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.