Pourquoi "umount" ne s'écrit-il pas "démonter"?

64

Je me demande s'il y a une raison historique ou pratique pour laquelle le umountcommandement n'est pas unmount.

uloBasEI
la source

Réponses:

79

Cela remonte à la toute première édition d'Unix , où tous les noms de fichiers standard ne comportaient que 6 caractères au maximum (pensez passwd), même si cette version supportait 8 noms dans un nom de fichier . La plupart des commandes avaient un fichier source associé se terminant par .c(par exemple umount.c), qui ne laissait que 6 caractères pour le nom de base.

Une limitation à 6 caractères peut également provenir d'une version de développement antérieure ou héritée d'un système IBM alors en vigueur comportant une limitation à 6 caractères. ( Les premières implémentations C avaient une limite de 6 caractères sur les identificateurs - identificateurs plus longs ont été acceptés , mais le compilateur seulement regardé les 6 premiers caractères, donc foobar1et foobar2. Étaient les mêmes variables)

(Je pensais me souvenir d'une umountpage de manuel répertoriant l'orthographe en tant que bogue d'origine inconnue, mais je ne la trouve pas maintenant.)

Gilles, arrête de faire le mal
la source
21
Nom de commande à 6 caractères + .c(ou .s) extension = limite de nom de fichier à 8 caractères.
geekosaur
@geekosaur: Ah, oui, le fichier source. Si vous écrivez une réponse, je supprimerai la mienne.
Gilles, arrête de faire le mal. »
5
Enh, annotez-le si vous voulez.
geekosaur
@geekosaur: J'ai aussi pensé à la page de manuel, mais V1 ne comportait pas de commande man (et l'une des pages de manuel s'appelle directory, ce qui n'aurait pas été adapté pour le moment). Je me demande donc pourquoi a passwdété tronqué à 6 caractères (il n'y avait pas passwdencore de commande, juste /etc/passwd).
Gilles 'SO- arrête d'être méchant'
2
Peut-être est-ce à cause du suffixe grec ", qui signifie" pas ", cela expliquerait aussiurandom
Anthony Garcia
8

Il semble y avoir eu des informations erronées depuis un moment.

La raison la plus probable pour la umountcommande ayant le nom abrégé est parce qu'il suit du nom de l'appel système qu'il utilise: umount().

La raison probable pour laquelle l'appel système "démonté" porte ce nom umount()est que les premiers linkers ont limité la longueur des identifiants externes à 6 caractères (sur un seul cas) sur certains types de systèmes (et qu'il était logique de maintenir la compatibilité avec de tels outils à l’époque) et "umount" est une forme logique d’abréviation de "unmount". Voir page 179 de la première édition du langage de programmation C pour une liste des caractéristiques des identificateurs externes de divers systèmes présentant un intérêt au moment de la publication.

Notez également que les premiers compilateurs C considéraient les 8 premiers caractères d’un identifiant comme significatifs, mais autorisaient des identifiants plus longs. (K & R page 33)

Notez que la longueur des identifiants dans les tables de symboles n'a rien à voir directement avec la longueur du nom de fichier, du moins pas sous Unix (les tables de symboles Unix, depuis la V1, ont 8 caractères pour les identifiants, bien que l'assembleur indique " génère des symboles d'au plus 7 octets " ).

Greg A. Woods
la source
-1

Pour la même raison, l' creatappel système n'est pas épelé create?

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

philfr
la source
4
Nan. Le regret dans la citation que vous citez est parce qu'ils auraient pu ajouter le 'e' même si la limite de 6 caractères a été débattue dans l'autre réponse. Il n’ya vraiment aucune bonne raison pour qu’il soit tronqué, contrairement à umount.
Warren Young
Je suppose qu'à cette époque, il était de tradition de tronquer les lettres si vous le pouviez.
Shadur