Dlaczego słowo „umount” nie jest pisane jako „odmontowane”?


64

Zastanawiam się, czy istnieje jakiś historyczny lub praktyczny powód, dla którego umountpolecenie to nie jest unmount.

Odpowiedzi:


79

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 foobar1i foobar2. Były takie same zmienne)

(Myślałem, że pamiętam umountstronę podręcznika, w której pisownia była błędem nieznanego pochodzenia, ale nie mogę jej teraz znaleźć).


21
6-znakowa nazwa polecenia + .c(lub .s) rozszerzenie = limit 8 znaków w nazwie pliku.
geekozaur

@geekosaur: Ach, racja, plik źródłowy. Jeśli napiszesz odpowiedź, usunę moją.
Gilles

5
Ech, po prostu adnotuj, jeśli chcesz.
geekozaur

@geekosaur: Myślałem również o stronie man, ale V1 nie miał komendy man (i nazywa się jedną ze stron man directory, która jeszcze by się nie zmieściła). Zastanawiam się więc, dlaczego passwdzostało obcięte do 6 znaków (jeszcze nie było passwdjeszcze polecenia, tylko /etc/passwd).
Gilles

2
Może to z powodu greckiego sufiksu ,ὐ, co oznacza „nie”, to też by tłumaczyłourandom
Anthony Garcia

8

Wygląda na to, że od jakiegoś czasu siedzą tu jakieś błędne informacje.

Najbardziej prawdopodobnym powodem umountpolecenia 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 ).


-1

Z tego samego powodu creatwywołanie systemowe nie jest zapisane create?

https://stackoverflow.com/questions/1713457/what-did-ken-thompson-mean-when-he-said-id-spell-create-with-an-e


4
Nie. Żal w cytowanym przez ciebie cytacie jest taki, że mogli dodać „e” nawet pomimo ograniczenia 6 znaków w drugiej odpowiedzi. Naprawdę nie ma dobrego powodu, aby go obciąć, w przeciwieństwie do umount.
Warren Young,

Domyślam się, że do tego czasu tradycją było obcinanie liter, jeśli można.
Shadur
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.