Dużo czytałem na temat Uniksa i Linuksa na temat BSD i GNU itp. Ale nadal nie rozumiem, jakie są rzeczywiste, praktyczne różnice między obszarami użytkownika BSD i GNU, mimo że często się o nich wspominają. Czy ktoś może opracować?
Odpowiadając, proszę w pełni wyjaśnij historyczne powiązania, pamiętając, że nie żyłem wystarczająco długo, aby doświadczyć czasu, w którym GNU / Linux nie był głównym nurtem UNIX (z wyjątkiem OS X).
Odpowiedzi:
Termin „obszar użytkownika” może odnosić się do wielu rzeczy w różnych kontekstach, ale tutaj interpretuję „obszar użytkownika GNU” vs. „obszar użytkownika BSD” jako domyślny, minimalny zestaw programów dostarczanych z dystrybucją.
Główna główna różnica polega na tym, że dwie obszary użytkownika zaczynają się od zupełnie innego kodu źródłowego. Kod źródłowy kota GNU Kod źródłowy kota NetBSD . Już z tego prostego w koncepcji programu widać, że kot NetBSD używa tradycyjnych, jednoliterowych flag wiersza poleceń. Programy GNU mają zwykle flagi jednoliterowe, ale także
--something-long
opcje typu. Programy GNU również dążą do zgodności z POSIX.Ta różnica w kodzie źródłowym spowoduje, że dwie obszary użytkownika będą się różnić w niektórych przypadkach.
Wygląda również na to, że NetBSD (przynajmniej) używa własnej wersji libc, standardowej biblioteki C. Wchodzę tutaj, ale libc i dynamiczne linkowanie są dziwnie powiązane między sobą. Ponownie, inny kod źródłowy prowadzi do różnych zachowań.
Myślę, że jako użytkownik powłoki odkryłbyś, że
ps
działałby inaczej ils
mógłby dać ci nieco inne wyniki niż zwykle. W przypadku niektórych programów musisz znaleźć równoważne flagi--long-option
linii poleceń.Historycznie rozumiem, że obszar użytkownika BSD schodzi bardziej bezpośrednio z V6 i V7 Bell Labs Unix, przez port 32 V do sprzętu VAX. Obszar użytkownika GNU jest nowszy, napisany przynajmniej w odpowiedzi na próby AT&T, by na początku lat 80. zachować ściśle strzeżony sekret kodu. Po zbyciu Bell System w 1983 r. AT&T próbował „zarabiać” na Uniksie. Częściowo miało to na celu licencjonowanie kodu źródłowego w sposób, który uniemożliwiłby większość ludzi go zobaczyć. Richard Stallman i inni mieli z tym problemy. Ich projekt GNU istniał specjalnie po to, aby stworzyć swobodnie udostępniany system podobny do Uniksa.
W międzyczasie do 1993 r. AT&T pozwał system University of California o systemy BSD („B” to Berkeley, gdzie mieści się University of California). Ludzie w Berkeley zastąpili wszystkie oryginalne źródła AT&T nowym kodem, a ten nowy kod stał się przodkiem przynajmniej obszaru użytkownika NetBSD. AT&T i UCB zawarły ugodę w 1994 r., Ujawnione publicznie w 2004 r.
Oczywiście przynajmniej pomysły zapylają się wzajemnie, więc istnieje przynajmniej podobieństwo koncepcyjne między obszarem użytkownika GNU i BSD, ale przypadki narożne zdecydowanie się różnią.
źródło
sed
dławiki na długich liniach wejściowych lubgrep
segfault na danych binarnych.