Odpowiedzi:
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źć).
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).
urandom
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 ” ).
Z tego samego powodu creatwywołanie systemowe nie jest zapisane create?
.c(lub.s) rozszerzenie = limit 8 znaków w nazwie pliku.