Ich habe auf Unix & Linux viel über BSDs und GNU usw. gelesen. Aber ich verstehe immer noch nicht, welche tatsächlichen, praktischen Unterschiede zwischen BSD- und GNU-Benutzerländern bestehen, obwohl sie oft erwähnt werden. Kann das jemand ausarbeiten?
Bitte erläutern Sie bei der Beantwortung alle historischen Zusammenhänge und denken Sie daran, dass ich nicht lange genug am Leben war, um eine Zeit zu erleben, in der GNU / Linux nicht der Mainstream-UNIX war (außer OS X).
Antworten:
Der Begriff "Benutzerland" kann sich auf viele Dinge in verschiedenen Zusammenhängen beziehen, aber hier interpretiere ich "GNU-Benutzerland" vs "BSD-Benutzerland" als die Standard-Mindestmenge 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 . Allein aus diesem einfachen Programm können Sie ersehen, dass NetBSDs Katze traditionelle Befehlszeilen-Flags mit einem Buchstaben verwendet. GNU-Programme neigen dazu, Flags mit einem Buchstaben zu haben, aber auch die
--something-long
Typoptionen. GNU-Programme tendieren auch zur POSIX-Kompatibilität.Dieser Unterschied im Quellcode verleiht den beiden Benutzerländern in einigen Fällen ein unterschiedliches Verhalten.
Es sieht auch so aus, als ob NetBSD (zumindest) eine eigene Version von libc verwendet, der Standard-C-Bibliothek. Ich komme hier über den Kopf, aber libc und dynamisches Verknüpfen hängen seltsamerweise zusammen. Auch hier führt ein anderer Quellcode zu einem anderen Verhalten.
Ich denke, dass Sie als Shell-Benutzer feststellen würden, dass sich
ps
dies andersls
verhält und Ihnen möglicherweise eine etwas andere Ausgabe liefert, als Sie es gewohnt sind. Sie müssten für einige Programme entsprechende Befehlszeilen-Flags finden, wenn Sie die--long-option
Art der Befehlszeilen-Flags verwenden.In der Vergangenheit ist meines Erachtens das BSD-Userland direkter von V6 und V7 Bell Labs Unix über den 32-V-Port auf VAX-Hardware zurückzuführen. GNU Userland ist neuer und wurde zumindest in gewisser Weise als Reaktion auf die Versuche von AT & T, Code zu Beginn der 80er Jahre streng geheim zu halten, geschrieben. 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 Menschen ihn nicht mehr sehen konnten. Richard Stallman und andere hatten Probleme damit. Ihr GNU-Projekt bestand speziell darin, ein frei teilbares Unix-ähnliches System zu schaffen.
In der Zwischenzeit verklagte AT & T 1993 das System der University of California über das BSD-System („B“ ist Berkeley, wo sich die University of California befindet). Die Leute in Berkeley hatten die gesamte ursprüngliche Quelle von AT & T durch neuen Code ersetzt, und dieser neue Code wurde zum Vorfahren von mindestens NetBSDs Userland. AT & T und UCB haben 1994 eine Einigung erzielt , die 2004 der Öffentlichkeit bekannt gegeben wurde.
Natürlich sind zumindest die Ideen gegenseitig befragt, so dass es zumindest konzeptionelle Ähnlichkeiten zwischen GNU- und BSD-Benutzerland gibt, aber die Eckfälle unterscheiden sich definitiv.
quelle
sed
Drosseln an langen Eingabezeilen oder Ihregrep
Fehler an Binärdaten auftreten.