Я много читал о Unix и Linux о BSD и GNU и т. Д. Но я до сих пор не понимаю, какие существуют реальные практические различия между пользовательскими областями BSD и GNU, несмотря на то, что они часто упоминаются. Кто-нибудь может уточнить?
При ответе, пожалуйста, полностью объясните исторические связи, помня, что я не был достаточно жив, чтобы пережить время, когда GNU / Linux не была основной UNIX (за исключением OS X).
Ответы:
Термин «пользовательская область» может относиться ко многим вещам в разных контекстах, но здесь я интерпретирую «пользовательская область 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, но конкретные случаи явно различаются.
источник
sed
дросселируете на длинных входных строках или вашиgrep
ошибки в двоичных данных.