Réponses:
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 foobar1
et foobar2
. Étaient les mêmes variables)
(Je pensais me souvenir d'une umount
page de manuel répertoriant l'orthographe en tant que bogue d'origine inconnue, mais je ne la trouve pas maintenant.)
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 passwd
encore de commande, juste /etc/passwd
).
urandom
Il semble y avoir eu des informations erronées depuis un moment.
La raison la plus probable pour la umount
commande 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 " ).
Pour la même raison, l' creat
appel système n'est pas épelé create
?
.c
(ou.s
) extension = limite de nom de fichier à 8 caractères.