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 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źć).
directory
, która jeszcze by się nie zmieściła). Zastanawiam się więc, dlaczego passwd
zostało obcięte do 6 znaków (jeszcze nie było passwd
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 ” ).
Z tego samego powodu creat
wywołanie systemowe nie jest zapisane create
?
.c
(lub.s
) rozszerzenie = limit 8 znaków w nazwie pliku.