Ich möchte wissen, welche Befehle für Linux neu geschrieben und welche von Unix beibehalten wurden.
Ich möchte wissen, welche Befehle für Linux neu geschrieben und welche von Unix beibehalten wurden.
Antworten:
Es scheint, dass Sie zwei sehr unterschiedliche Teile des Betriebssystems verwechseln. Es ist verständlich, weil sie oft synonym verwendet werden, aber technisch nicht korrekt sind, sodass Ihre Frage auf einer fehlerhaften Prämisse basiert. Um die Frage, die Sie wahrscheinlich stellen möchten, vollständig zu erforschen und hoffentlich zu beantworten, ist eine kurze Geschichtsstunde erforderlich.
Zunächst gab es UNIX. Im Grunde bedeutete UNIX damals das AT & T UNIX-System , das an erster Stelle stand. Aber AT & T UNIX wurde nicht mehr kostenlos, und so startete Richard Stallman das GNU-Projekt, um ein Unix-System zu schreiben, das kostenlos war . Daher lautet der Name Gnu Not Unix , abgekürzt GNU. Pläne für GNU wurden 1983 veröffentlicht und die Entwicklung begann 1984 .
In den frühen neunziger Jahren hatte GNU die meisten UNIX-Dienstprogramme von Grund auf neu implementiert. Wikipedia listet einige Komponenten des Gesamtsystems auf, die nicht umgeschrieben wurden (TeX, das X Window System und der Mach-Mikrokernel werden als Beispiele für Komponenten genannt, die nicht umgeschrieben wurden) Ziel ist es, die Wiederverwendung von AT & T-Code (bzw. nicht freiem Code) zu vermeiden und deren Funktionen durch Hinzufügen von Befehlszeilenoptionen zu erweitern. Infolgedessen waren die GNU-Dienstprogramme regelmäßig leistungsfähiger als die Werkzeuge, von denen sie ihre ursprüngliche Inspiration bezogen haben.
Zu diesem Zeitpunkt fehlte GNU noch eine wichtige Komponente: ein Betriebssystemkern , mit dem alles auf einem Computer zusammenarbeiten konnte, auf dem kein anderes Betriebssystem ausgeführt wurde. 1991 begann Linus Torvalds mit der Arbeit an einem Spielzeugprojekt, das später unter dem Namen Linux bekannt wurde. Es war im Grunde ein Schulprojekt, um etwas über die damals neue 32-Bit- Intel 80386-CPU zu lernen , und begann äußerst einfach, verwandelte sich aber schließlich in einen tatsächlich verwendbaren Betriebssystemkern. Aber es gab keine Userland-Software. Linux allein bietet keine Shell, keine Systemstartfunktionen, die über die Kernel-Initialisierung hinausgehen, keinen Texteditor, keine grafische Oberfläche, nichts. Der Kernel ist wie ein Automotor; Unverzichtbar, um ein nützliches Auto zu bauen, aber für sich allein nutzlos (für ein nützliches Auto benötigen Sie Dinge wie Räder, Getriebe, Lenkung, einen Platz für den Fahrer, einen Kraftstofftank oder einen anderen Energiespeicher usw.). Der Linux-Kernel wurde schließlich unter der GNU General Public License verteilt, genau wie die GNU-Software .
Also begannen die Leute, die beiden zu paaren. Sie würden ein Unix-ähnliches Userland erhalten, zusammen mit einem Kernel, der auf Ideen von Unix basiert (einschließlich einer großen Ähnlichkeit mit POSIX ), komplett mit Quellcode, den Sie so oft hacken können, wie Sie möchten, und es hat nichts gekostet . Vor allem bevor Linux-Distributionen verbreitet wurden, dauerte es ein bisschen, bis die Dinge zum Laufen kamen, aber es war fertig genug, um für diejenigen, die bereit waren, etwas Zeit damit zu verbringen, einigermaßen brauchbar zu sein.
In diesen Tagen stellt GNU einen eigenen Kernel zur Verfügung. Sie haben wahrscheinlich noch nichts davon gehört, aber es heißt GNU Hurd . Aber Hurd gab es nicht in den frühen 1990er Jahren, als Linux unter Hobbyisten und Bastlern zunehmend an Bedeutung gewann. Daher fand die Kombination aus Linux-Kernel und einem hauptsächlich aus GNU bestehenden Benutzerland die größte Beachtung bei den Entwicklern.
Heutzutage installieren viele Unix-Systeme Teile des GNU-Benutzerlandes oder erlauben es dem Administrator, diese einfach zu installieren. Sie können Dinge wie GNU bash, die GNU Compiler Collection, die GNU C-Bibliothek (Vanille oder gepatcht) usw. auf einem anderen Nicht-GNU-System sehen.
Um die Sache noch schlimmer zu machen, verwenden einige Systeme den Linux-Kernel, aber überhaupt kein GNU-Userland. Als häufig verwendetes Beispiel wird Android als Betriebssystem betrachtet , bei dem es sich im Grunde um den Linux-Kernel handelt, der mit einem benutzerdefinierten Benutzerland gekoppelt ist.
Dies ist wichtig, da es die Grenze zwischen GNU, Linux und den verschiedenen Unixen erheblich verwischt ( es gibt nur einen UNIX , aber es gibt viele Unixe und noch mehr Unix-ähnliche Betriebssysteme ). Wenn Sie nach Linux fragen, fragen Sie wirklich sehr oft nach dem GNU / Linux-System. Aber denken Sie an Debian GNU / kFreeBSD , das ein GNU-Userland auf dem FreeBSD-Kernel ausführt und überhaupt kein Linux verwendet. Oder zum Beispiel Solaris, auf dem Sie leicht verschiedene GNU-Pakete installieren können, einschließlich zB coreutils . Ich denke, Mac OS X wird auch mit Teilen des GNU-Userlands ausgeliefert. Oder betrachten Sie das oben erwähnte Android.
Am Ende könnte ein verwendbares GNU-System Nicht-GNU-Code ausführen, und ein Nicht-GNU-System könnte GNU-Code ausführen, aber die GNU-Dienstprogramme enthalten keinen Nicht-GNU-Code.