Zastanawiam się, czy istnieje jakiś historyczny lub praktyczny powód, dla którego umount
polecenie to nie jest unmount
.
źródło
Zastanawiam się, czy istnieje jakiś historyczny lub praktyczny powód, dla którego umount
polecenie to nie jest unmount
.
To sięga aż do pierwszego wydania Uniksa , w którym wszystkie standardowe nazwy plików miały najwyżej 6 znaków (myślę passwd
), mimo że ta wersja obsługiwała okropne 8 znaków w nazwie pliku . Większość poleceń miała powiązany plik źródłowy kończący się na .c
(np. umount.c
), Który pozostawił tylko 6 znaków dla nazwy podstawowej.
Ograniczenie do 6 znaków mogło być również przeniesieniem z wcześniejszej wersji programistycznej lub odziedziczone po ówczesnym systemie IBM, który miał ograniczenie do 6 znaków. (Early implementacje C miał limit 6-znakowy identyfikatorów - dłuższy identyfikatory zostały zaakceptowane, ale kompilator wyglądał tylko na pierwszych 6 znaków, więc foobar1
i foobar2
. Były takie same zmienne)
(Myślałem, że pamiętam umount
stronę podręcznika, w której pisownia była błędem nieznanego pochodzenia, ale nie mogę jej teraz znaleźć).
.c
(lub.s
) rozszerzenie = limit 8 znaków w nazwie pliku.directory
, która jeszcze by się nie zmieściła). Zastanawiam się więc, dlaczegopasswd
zostało obcięte do 6 znaków (jeszcze nie byłopasswd
jeszcze polecenia, tylko/etc/passwd
).urandom
Wygląda na to, że od jakiegoś czasu siedzą tu jakieś błędne informacje.
Najbardziej prawdopodobnym powodem
umount
polecenia mającego skrótu jest, ponieważ wynika z nazwy wywołania systemowego, który to wykorzystuje:umount()
.Prawdopodobnym powodem, dla którego wywołanie systemowe „odmontować” o tej nazwie
umount()
jest to, że wczesne linkery ograniczyły długość zewnętrznych identyfikatorów do zaledwie 6 znaków (tylko jednego przypadku) w niektórych typach systemów (i miało sens utrzymanie zgodności z takimi narzędziami w tym czasie), a „umount” jest logiczną formą skrótu „odmontować”. Na stronie 179 pierwszego wydania języka programowania C znajduje się lista cech zewnętrznego identyfikatora różnych systemów zainteresowania w momencie publikacji.Zauważ też, że wczesne kompilatory C traktowały pierwsze 8 znaków identyfikatora jako znaczące, ale pozwoliły na dłuższe identyfikatory. (K&R strona 33)
Zauważ, że długość identyfikatorów w tabelach symboli nie ma nic wspólnego bezpośrednio z długością nazwy pliku, przynajmniej nie w obrębie Uniksa (tabele symboli Unix, od wersji V1, mają 8 znaków dla identyfikatorów, chociaż w instrukcji V1 zaznaczono, że asembler „ generuje symbole o maksymalnej długości 7 bajtów ” ).
źródło
Z tego samego powodu
creat
wywołanie systemowe nie jest zapisanecreate
?https://stackoverflow.com/questions/1713457/what-did-ken-thompson-mean-when-he-said-id-spell-create-with-an-e
źródło