Was sind die Hauptunterschiede zwischen BSD und GNU / Linux Userland?

38

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).

strugee
quelle
2
Ich habe eine Liste der Unterschiede zu GNU / Linux in OS X in der Befehlszeilenumgebung hier veröffentlicht: reddit.com/r/commandline/comments/4jydnw/… .
Nisetama

Antworten:

28

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-longTypoptionen. 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 psdies anders lsverhä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-optionArt 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.

Bruce Ediger
quelle
1
Beide Links verweisen auf einen Ort.
Ist das also eher für die praktische Verwendung der Shell gedacht? lange Fahnen und Eckenkoffer?
Strugee
12
Meine Erfahrung ist auch, dass GNU die Skalierbarkeit ernst nimmt. Vielleicht zählt das auch als " Eckfall ", aber es ist in der Tat sehr frustrierend, wenn Ihre sedDrosseln an langen Eingabezeilen oder Ihre grepFehler an Binärdaten auftreten.
Tripleee
Ein großer Unterschied ist, dass GNU niemals einen eigenen Kernel hatte, während BSD auf einem eigenen Kernel basierte und diesen aufbaute, der zum Teil in kommerziellen Unix-Systemen weit verbreitet ist. MAC OS X verwendet beispielsweise Darwin als BSK-basierten Kernel.
Visualisierung
@visualication Es gibt die GNU HURD, aber das ist noch nicht veröffentlicht
Dmitry Kudriavtsev