Warum wird "umount" nicht "unmount" geschrieben?

64

Ich frage mich, ob es einen historischen oder praktischen Grund gibt, warum der umountBefehl nicht ist unmount.

uloBasEI
quelle

Antworten:

79

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 foobar1und foobar2. Waren die gleichen Variablen)

(Ich dachte, ich erinnere mich an eine umountManpage, auf der die Rechtschreibung als Fehler unbekannten Ursprungs aufgeführt ist, aber ich kann sie jetzt nicht finden.)

Gilles 'SO - hör auf böse zu sein'
quelle
21
6 Zeichen Befehlsname + .c(oder .s) Erweiterung = 8 Zeichen Dateinamenbegrenzung.
Geekosaurier
@geekosaur: Ah, richtig, die Quelldatei. Wenn Sie eine Antwort schreiben, lösche ich meine.
Gilles 'SO- hör auf böse zu sein'
5
Äh, kommentiere es einfach, wenn du willst.
Geekosaurier
@geekosaur: Ich dachte auch an die Manpage, aber V1 hatte keinen Man-Befehl (und eine der Manpages heißt directory, was noch nicht gepasst hätte). Also frage ich mich, warum passwdauf 6 Zeichen gekürzt wurde (es gab auch noch keinen passwdBefehl, nur /etc/passwd).
Gilles 'SO- hör auf böse zu sein'
2
Vielleicht liegt es am griechischen Suffix, was "nicht" bedeutet, das auch erklären würdeurandom
Anthony Garcia
8

Es sieht so aus, als ob hier schon eine Weile einige Fehlinformationen liegen.

Der wahrscheinlichste Grund für den umountBefehl 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 " ).

Greg A. Woods
quelle
-1

Aus dem gleichen Grund wird der creatSystemaufruf nicht geschrieben create?

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

philfr
quelle
4
Nee. Das Bedauern in dem Zitat, auf das Sie verweisen, ist, dass sie trotz der in der anderen Antwort diskutierten Beschränkung auf 6 Zeichen das 'e' hätten hinzufügen können. Es gibt wirklich keinen guten Grund dafür, dass es abgeschnitten wird, anders als bei umount.
Warren Young
Ich vermute, zu dieser Zeit war es Tradition, Buchstaben abzuschneiden, wenn Sie könnten.
Shadur