Ich habe viel über Unix &Linux über BSDs und GNU usw. gelesen. Aber ich verstehe immer noch nicht, was einige tatsächliche, praktische Unterschiede zwischen BSD- und GNU-Benutzerländern sind, obwohl sie oft erwähnt werden. Kann jemand näher darauf eingehen?
Wenn Sie antworten, erläutern Sie bitte die historischen Zusammenhänge vollständig und denken Sie daran, dass ich noch nicht lange genug am Leben bin, um eine Zeit erlebt zu haben, in der GNU/Linux nicht das Mainstream-UNIX war (mit Ausnahme von OS X).
Akzeptierte Antwort:
Der Begriff „Userland“ kann sich in verschiedenen Kontexten auf viele Dinge beziehen, aber hier interpretiere ich „GNU-Userland“ vs. „BSD-Userland“ als den standardmäßigen, minimalen Satz von Programmen, die mit einer Distribution geliefert werden.
Der große Hauptunterschied besteht darin, dass die beiden Userlands mit völlig unterschiedlichem Quellcode beginnen. GNU-Cat-Quellcode NetBSD-Cat-Quellcode. Schon an diesem Programm mit einfachem Konzept können Sie sehen, dass NetBSDs cat traditionelle Befehlszeilen-Flags mit einem Buchstaben verwendet. GNU-Programme neigen dazu, Flags mit einem Buchstaben zu haben, aber auch den --something-long
Optionen eingeben. Auch GNU-Programme tendieren zur POSIX-Kompatibilität.
Dieser Unterschied im Quellcode wird den beiden Benutzerländern in einigen Fällen ein unterschiedliches Verhalten verleihen.
Es sieht auch so aus, als würde NetBSD (zumindest) seine eigene Version von libc, der Standard-C-Bibliothek, verwenden. Ich steige hier über meinen Kopf ein, aber libc und dynamisches Linken sind seltsamerweise miteinander verbunden. Auch hier führt unterschiedlicher Quellcode zu unterschiedlichem Verhalten.
Ich denke, dass Sie als Shell-Benutzer diesen ps
finden würden würde sich anders verhalten, und ls
könnte Ihnen eine etwas andere Ausgabe geben, als Sie es gewohnt sind. Sie müssen für einige Programme entsprechende Befehlszeilen-Flags finden, wenn Sie die --long-option
verwenden Art der Befehlszeilen-Flags.
Historisch gesehen ist mein Verständnis, dass das BSD-Benutzerland direkter von V6 und V7 Bell Labs Unix über den 32-V-Port zur VAX-Hardware abstammt. GNU Userland ist neuer und wurde zumindest teilweise als Reaktion auf die Versuche von AT&T geschrieben, den Code Anfang der 80er Jahre streng geheim zu halten. Nach der Veräußerung von Bell System im Jahr 1983 versuchte AT&T, Unix zu „monetarisieren“. Ein Teil davon bestand darin, den Quellcode so zu lizenzieren, dass die meisten Leute ihn nie sehen konnten. Richard Stallman und andere hatten damit Probleme. Ihr GNU-Projekt existierte speziell, um ein frei teilbares Unix-ähnliches System zu schaffen.
Siehe auch:Schalter – Transferschalter an Nullleiter und Masse im Nebenfeld statt am Hauptfeld angeschlossen?In der Zwischenzeit, bis 1993, verklagte AT&T das System der University of California wegen des BSD-Systems („B“ ist Berkeley, wo sich die University of California befindet). Die Leute in Berkeley hatten den gesamten ursprünglichen Quellcode von AT&T durch neuen Code ersetzt, und dieser neue Code wurde zum Vorfahren von zumindest NetBSDs Userland. AT&T und UCB kamen 1994 zu einer Einigung, die 2004 der Öffentlichkeit bekannt gegeben wurde.
Natürlich befruchten sich zumindest Ideen gegenseitig, also gibt es zumindest konzeptionelle Ähnlichkeiten zwischen GNU und BSD Userland, aber Eckfälle unterscheiden sich definitiv.