Каковы основные различия между BSD и GNU / Linux?

38

Я много читал о Unix и Linux о BSD и GNU и т. Д. Но я до сих пор не понимаю, какие существуют реальные практические различия между пользовательскими областями BSD и GNU, несмотря на то, что они часто упоминаются. Кто-нибудь может уточнить?

При ответе, пожалуйста, полностью объясните исторические связи, помня, что я не был достаточно жив, чтобы пережить время, когда GNU / Linux не была основной UNIX (за исключением OS X).

strugee
источник
2
Я разместил список отличий от GNU / Linux в OS X в среде командной строки здесь: reddit.com/r/commandline/comments/4jydnw/… .
Нисетама

Ответы:

28

Термин «пользовательская область» может относиться ко многим вещам в разных контекстах, но здесь я интерпретирую «пользовательская область GNU» против «пользовательская область BSD» как минимальный набор программ по умолчанию, поставляемых с дистрибутивом.

Основное отличие состоит в том, что эти две области пользователей начинаются с совершенно разного исходного кода. Исходный код кошки GNU Исходный код кошки NetBSD . Только из этой простой в концепции программы вы можете видеть, что кошка NetBSD использует традиционные однобуквенные флаги командной строки. Программы GNU, как правило, имеют однобуквенные флаги, но также имеют параметры --something-longтипа. Программы GNU также имеют тенденцию к совместимости с POSIX.

Эта разница в исходном коде придаст двум пользовательским областям различное поведение в некоторых случаях.

Похоже, что NetBSD (по крайней мере) использует свою собственную версию libc, стандартную библиотеку C. Я перебираюсь сюда, но libc и динамическое связывание странным образом связаны между собой. Опять же, другой исходный код приведет к другому поведению.

Я думаю, что, как пользователь оболочки, вы обнаружите, что он psбудет действовать по-другому и lsможет дать вам немного другой результат, чем вы привыкли. Вам придется найти эквивалентные флаги командной строки для некоторых программ, если вы используете --long-optionтип флагов командной строки.

Исторически я понимаю, что пользовательское пространство BSD происходит непосредственно от V6 и V7 Bell Labs Unix, через порт 32V на аппаратное обеспечение VAX. Пользовательская среда GNU более новая, написанная по крайней мере в некоторой степени в ответ на попытки AT & T держать код в секрете в начале 80-х. После продажи системы Bell в 1983 году AT & T пыталась «монетизировать» Unix. Частично это заключалось в том, чтобы лицензировать исходный код таким образом, чтобы большинство людей не видели его. У Ричарда Столлмана и других были проблемы с этим. Их проект GNU существовал специально для создания свободно распространяемой Unix-подобной системы.

Между тем, к 1993 году AT & T подала в суд на систему Калифорнийского университета по системам BSD («B» - Беркли, где находится Калифорнийский университет). Люди в Беркли заменили весь исходный код AT & T новым кодом, и этот новый код стал прародителем по крайней мере пользовательского пространства NetBSD. AT & T и UCB пришли к соглашению в 1994 году, показал публике в 2004 году.

Естественно, что, по крайней мере, идеи взаимно опыляются, так что, по крайней мере, существует концептуальное сходство между GNU и BSD, но конкретные случаи явно различаются.

Брюс Эдигер
источник
1
Обе ваши ссылки указывают на одно местоположение.
так ли это для практического использования оболочки? длинные флаги и угловые чехлы?
Струджи
12
Мой опыт также показывает, что GNU относится к масштабируемости более серьезно. Может быть, это также считается «угловым случаем», но это очень расстраивает, когда вы sedдросселируете на длинных входных строках или ваши grepошибки в двоичных данных.
tripleee
одно большое отличие состоит в том, что GNU никогда не имел своего собственного ядра, в то время как BSD основывался и строился на собственном ядре, которое, в частности, широко используется в коммерческих системах Unix. MAC OS X использует Darwin в качестве ядра на основе BSK, например.
визуализация
@visualication Есть GNU HURD, но это еще не выпущено
Дмитрий Кудрявцев