GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wurden alle Unix-Befehle in Linux neu geschrieben?

Ich würde gerne wissen, welche Befehle für Linux umgeschrieben und welche von Unix beibehalten wurden?

Akzeptierte Antwort:

Es scheint, dass Sie zwei sehr unterschiedliche Teile des Betriebssystems verwechseln. Es ist verständlich, weil sie oft synonym verwendet werden, aber es ist technisch falsch, 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.

Zuerst gab es UNIX. Im Grunde bedeutete UNIX damals das AT&T UNIX-System, das zuerst kam. Aber AT&T UNIX wurde unfrei, also startete Richard Stallman das GNU-Projekt, um ein Unix-System zu schreiben, das frei war. Daher der Name Gnu ist kein Unix , abgekürzt GNU. Pläne für GNU wurden 1983 veröffentlicht und die Entwicklung begann 1984.

In den frühen 1990er 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 nicht umgeschriebene Komponenten genannt), aber meistens wurden die Userland-Tools von Grund auf neu geschrieben, um sich zu treffen das Ziel, die Wiederverwendung von AT&T-Code (oder besser gesagt nicht freiem) Code zu vermeiden und ihre Fähigkeiten durch Hinzufügen von Befehlszeilenoptionen zu erweitern. Infolgedessen waren die GNU-Dienstprogramme regelmäßig leistungsfähiger als die Tools, von denen sie ihre ursprüngliche Inspiration bezogen.

Zu diesem Zeitpunkt fehlte GNU noch eine entscheidende Komponente:ein Betriebssystem-Kernel , was es ermöglichen würde, dass alles auf einem tatsächlichen Computer zusammenarbeitet, auf dem kein anderes Betriebssystem ausgeführt wird. 1991 begann Linus Torvalds mit der Arbeit an einem Spielzeugprojekt, das schließlich als Linux bekannt wurde. Es war im Grunde ein Schulprojekt, um etwas über die damals neue 32-Bit-CPU Intel 80386 zu lernen, und begann extrem einfach, verwandelte sich aber schließlich in einen tatsächlich brauchbaren Betriebssystemkern. Aber es hatte keine Userland-Software; Linux allein bietet keine Shell, keine Systemstartmöglichkeiten über die Kernel-Initialisierung hinaus, keinen Texteditor, keine grafische Oberfläche, nichts . Der Kernel ist wie ein Automotor; unentbehrlich, um ein nützliches Auto zu bauen, aber für sich genommen nutzlos (für ein nützliches Auto braucht man Dinge wie Räder, Getriebe, Lenkung, eine Sitzgelegenheit für den Fahrer, einen Kraftstofftank oder einen anderen Energiespeicher usw.). Der Linux-Kernel wurde schließlich unter der GNU General Public License vertrieben, dasselbe wie die GNU-Software .

Also fingen die Leute an, die beiden zu paaren. Sie würden ein Unix-ähnliches Benutzerland bekommen, zusammen mit einem Kernel, der auf Ideen von Unix basiert (einschließlich einer großen Ähnlichkeit mit POSIX), komplett mit Quellcode, den Sie weghacken könnten, wie viel Sie wollten, und es kostete nichts . Besonders vor Linux-Distributionen üblich wurde, brauchte es ein wenig Basteln, um die Dinge zum Laufen zu bringen, aber es war fertig genug, um von denen einigermaßen brauchbar zu sein, die bereit waren, etwas Zeit damit zu verbringen.

Siehe auch:Linux – Java auf Ubuntu/Linux installieren?

Heutzutage stellt GNU einen eigenen Kernel zur Verfügung. Sie haben wahrscheinlich noch nie davon gehört, aber es heißt GNU Hurd. Aber Hurd war in den frühen 1990er Jahren nicht dabei, als Linux anfing, unter Bastlern und Tüftlern an Bedeutung zu gewinnen, also war es die Kombination aus dem Linux-Kernel und einer hauptsächlich aus GNU bestehenden Benutzerwelt, die die meiste Aufmerksamkeit unter den Entwicklern auf sich zog.

Außerdem installieren heutzutage viele Unix-Systeme Teile des GNU-Benutzerlandes oder erlauben es dem Administrator, diese einfach zu installieren. Auf einem ansonsten Nicht-GNU-System sehen Sie möglicherweise Dinge wie GNU bash, die GNU Compiler Collection, die GNU C-Bibliothek (Vanilla oder gepatcht) und so weiter.

Erschwerend kommt hinzu, dass einige Systeme den Linux-Kernel verwenden, aber überhaupt kein GNU-Userland. Betrachten Sie als weit verbreitetes Beispiel hierfür das Android-Betriebssystem, das im Grunde der Linux-Kernel ist, der mit einem benutzerdefinierten Userland gekoppelt ist.

Das ist wichtig weil es die Grenze zwischen GNU, Linux und den verschiedenen Unixen erheblich verwischt (es gibt nur ein 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 problemlos verschiedene GNU-Pakete installieren können, darunter z. Coreutils. Ich denke, Mac OS X wird auch mit Teilen des GNU-Benutzerlandes ausgeliefert. Oder betrachten Sie das oben erwähnte Android.

Am Ende ein brauchbares GNU-System könnte Nicht-GNU-Code ausführen, und ein Nicht-GNU-System könnte GNU-Code ausführen, aber die GNU-Dienstprogramme keinen Nicht-GNU-Code enthalten.


Linux
  1. Linux – Ist Linux ein Unix?

  2. Linux – Sind verschiedene Linux/Unix-Kernel austauschbar?

  3. A bis Z Linux-Befehle

  4. UNIX / Linux :Beispiele für Bash-Verlaufsbefehle zum Wiederholen der letzten Befehle

  5. Alle Linux-Befehle zum Komprimieren/Dekomprimieren

So führen Sie .sh-Dateibefehle auf einmal in Linux aus

mkdir-Befehl unter Linux/Unix

Linux gegen Unix

Grep-Befehl unter Linux/UNIX

Zip- und Unzip-Befehle unter Linux/Unix

Wie erstelle ich benutzerdefinierte Befehle in Unix/Linux?