Quelles sont les principales différences entre BSD et GNU / Linux?

38

J'ai beaucoup lu sur Unix et Linux sur les BSD et GNU, etc. Cependant, je ne comprends toujours pas quelles sont les différences réelles et pratiques qui existent entre les domaines utilisateur BSD et GNU, bien qu'elles soient souvent mentionnées. Quelqu'un peut-il élaborer?

Lorsque vous répondez, expliquez clairement les liens historiques, tout en gardant à l’esprit que je n’ai pas été en vie assez longtemps pour vivre une époque où GNU / Linux n’était pas l’UNIX principal (à l’exception de OS X).

combattant
la source
2
J'ai posté une liste des différences entre GNU / Linux et OS X dans l'environnement de ligne de commande ici: reddit.com/r/commandline/comments/4jydnw/… .
nisetama

Réponses:

28

Le terme "userland" peut faire référence à de nombreuses choses dans différents contextes, mais j'interprète ici "utilisateur GNU" vs "utilisateur BSD" comme étant le jeu minimum par défaut de programmes fournis avec une distribution.

La principale différence réside dans le fait que les deux zones utilisateur commencent par un code source complètement différent. Code source du chat GNU Code source du chat NetBSD . À partir de ce programme simple, vous pouvez constater que le chat de NetBSD utilise des indicateurs de ligne de commande classiques à une lettre. Les programmes GNU ont tendance à avoir des drapeaux à une lettre, mais aussi les --something-longoptions de type. Les programmes GNU tendent également vers la compatibilité POSIX.

Cette différence de code source prêtera aux deux utilisateurs des comportements différents dans certains cas.

Il semble également que NetBSD (au moins) utilise sa propre version de libc, la bibliothèque C standard. Je suis au-dessus de ma tête ici, mais la libc et les liens dynamiques sont étrangement liés. De nouveau, un code source différent conduira à un comportement différent.

Je pense qu'en tant qu'utilisateur shell, vous constateriez que pscela agirait différemment et lspourrait vous donner une sortie légèrement différente de celle à laquelle vous êtes habitué. Si vous utilisez le --long-optiontype d’indicateurs de ligne de commande, vous devez rechercher des indicateurs de ligne de commande équivalents pour certains programmes .

Auparavant, si je comprends bien, le domaine utilisateur BSD descend plus directement des Unix V6 et V7 des Bell Labs, via le port 32 V vers le matériel VAX. GNU userland est plus récent, écrit au moins un peu en réaction aux tentatives d’AT & T de garder le code très secret au début des années 80. Après la cession du système Bell en 1983, AT & T a tenté de "monétiser" Unix. Une partie de cela consistait à octroyer une licence au code source de manière à empêcher la plupart des gens de le voir. Richard Stallman et d'autres ont eu des problèmes avec cela. Leur projet GNU visait spécifiquement à créer un système de type Unix pouvant être partagé librement.

Entre-temps, en 1993, AT & T avait assigné en justice le système de l'Université de Californie sur les systèmes BSD («B» est Berkeley, où se trouve l'Université de Californie). Les employés de Berkeley avaient remplacé l’ensemble des sources originales d’AT & T par un nouveau code, qui est devenu l’ancêtre d’au moins le pays d’utilisation de NetBSD. AT & T et UCB sont parvenus à un accord en 1994, révélé au public en 2004.

Naturellement, au moins les idées se croisent, il y a donc au moins une similitude conceptuelle entre GNU et BSD, mais les cas d'école diffèrent nettement.

Bruce Ediger
la source
1
Vos deux liens pointent vers un seul endroit.
Alors, est-ce que cela a tendance à être pratique? longs drapeaux et coffres d'angle?
Strugee
12
Mon expérience est aussi que GNU prend l’évolutivité plus au sérieux. Peut-être que cela compte aussi comme "cas d'angle", mais c'est très frustrant quand vous sedétouffez sur de longues lignes d'entrée ou que vous grepcommettez des défauts sur des données binaires.
Tripleee
Une grande différence est que GNU n’a jamais eu son propre noyau alors que BSD reposait et s’appuyait sur son propre noyau, qui, par endroits, est largement utilisé dans les systèmes commerciaux Unix. MAC OS X utilise Darwin en tant que noyau basé sur BSK, par exemple.
Visualisation
@visualication Il y a le GNU HURD mais il n'a pas encore été publié
Dmitry Kudriavtsev