Respuestas:
Esto se remonta a la primera edición de Unix , donde todos los nombres de archivo estándar tenían solo 6 caracteres como máximo (piense passwd
), a pesar de que esta versión admitía 8 caracteres en un nombre de archivo . La mayoría de los comandos tenían un archivo fuente asociado que terminaba en .c
(por ejemplo umount.c
), que dejaba solo 6 caracteres para el nombre base.
Una limitación de 6 caracteres también podría haber sido un remanente de una versión de desarrollo anterior, o heredada de un sistema IBM actual que tenía una limitación de 6 caracteres. (Early C implementaciones tenían un límite de 6 caracteres en identificadores - identificadores más largos fueron aceptadas pero el compilador solo tuvieron en cuenta los primeros 6 caracteres, por lo que foobar1
y foobar2
. Eran la misma variable)
(Pensé que recordaba una umount
página de manual que enumeraba la ortografía como un error de origen desconocido, pero ahora no puedo encontrarla).
directory
, que todavía no encajaría). Así que me pregunto por qué passwd
se truncó a 6 caracteres (tampoco había un passwd
comando todavía, solo /etc/passwd
).
urandom
Parece que ha habido información errónea aquí por un tiempo.
La razón más probable para el umount
comando que tiene el nombre abreviado es porque sigue a partir del nombre de la llamada al sistema que utiliza: umount()
.
La razón probable de que la llamada al sistema "desmontada" tenga el nombre umount()
es porque los primeros enlazadores limitaron la longitud de los identificadores externos a tan solo 6 caracteres (de un solo caso) en algunos tipos de sistemas (y tenía sentido mantener la compatibilidad con tales herramientas en ese momento), y "umount" es una forma lógica de abreviatura para "desmontar". Consulte la página 179 de la primera edición de The C Programming Language para obtener una lista de las características del identificador externo de varios sistemas de interés en el momento de la publicación.
Tenga en cuenta también que los primeros compiladores de C trataron los primeros 8 caracteres de un identificador como significativos, pero permitieron que los identificadores fueran más largos. (K&R página 33)
Tenga en cuenta que la longitud de los identificadores en las tablas de símbolos no tiene nada que ver directamente con la longitud del nombre de archivo, al menos no dentro de Unix (las tablas de símbolos de Unix, desde V1, tienen 8 caracteres para los identificadores, aunque en el manual de V1 se indica que el ensamblador " genera símbolos de como máximo 7 bytes " ).
¿Por la misma razón que la creat
llamada al sistema no está escrita create
?
.c
(o.s
) extensión = límite de nombre de archivo de 8 caracteres.