Antworten:
Dies reicht bis in die allererste Ausgabe von Unix zurück , in der alle Standarddateinamen nur maximal 6 Zeichen lang waren (think passwd
), obwohl diese Version einen Namen mit 8 Zeichen unterstützte . Den meisten Befehlen war eine Quelldatei mit der Endung .c
(z. B. umount.c
) zugeordnet, die nur 6 Zeichen für den Basisnamen enthielt.
Eine Beschränkung auf 6 Zeichen war möglicherweise auch ein Überbleibsel einer früheren Entwicklungsversion oder wurde von einem damals aktuellen IBM System mit einer Beschränkung auf 6 Zeichen geerbt. (Early C Implementierungen hatte eine 6-Zeichen - Grenze auf Identifikatoren - mehr Identifikatoren akzeptiert wurden , aber der Compiler sah nur die ersten 6 Zeichen, so foobar1
und foobar2
. Waren die gleichen Variablen)
(Ich dachte, ich erinnere mich an eine umount
Manpage, auf der die Rechtschreibung als Fehler unbekannten Ursprungs aufgeführt ist, aber ich kann sie jetzt nicht finden.)
directory
, was noch nicht gepasst hätte). Also frage ich mich, warum passwd
auf 6 Zeichen gekürzt wurde (es gab auch noch keinen passwd
Befehl, nur /etc/passwd
).
urandom
Es sieht so aus, als ob hier schon eine Weile einige Fehlinformationen liegen.
Der wahrscheinlichste Grund für den umount
Befehl den abgekürzten Namen hat, weil es aus dem Namen des Systemaufruf folgt , die sie verwendet: umount()
.
Der wahrscheinliche Grund für den "Unmount" -Systemaufruf mit dem Namen umount()
ist, dass frühe Linker die Länge externer Bezeichner auf einigen Systemtypen auf nur 6 Zeichen (von nur einem Fall) begrenzt haben (und es sinnvoll war, die Kompatibilität mit solchen Tools aufrechtzuerhalten und "umount" ist eine logische Abkürzung für "unmount". Auf Seite 179 der ersten Ausgabe von The C Programming Language finden Sie eine Liste der externen Kennungseigenschaften verschiedener interessierender Systeme zum Zeitpunkt der Veröffentlichung.
Beachten Sie auch, dass frühe C-Compiler die ersten 8 Zeichen eines Bezeichners als signifikant behandelten, jedoch zuließen, dass Bezeichner länger waren. (K & R Seite 33)
Beachten Sie, dass die Länge der Bezeichner in Symboltabellen nichts direkt mit der Dateinamenlänge zu tun hat, zumindest nicht innerhalb von Unix (Unix-Symboltabellen haben seit V1 8 Zeichen für Bezeichner, obwohl im V1-Handbuch vermerkt ist, dass der Assembler " erzeugt Symbole von höchstens 7 Bytes " ).
Aus dem gleichen Grund wird der creat
Systemaufruf nicht geschrieben create
?
.c
(oder.s
) Erweiterung = 8 Zeichen Dateinamenbegrenzung.