Gil*_*il' 87
这可以追溯到Unix 的第一个版本,其中所有标准文件名最多只有 6 个字符长(想想看passwd
),即使这个版本支持文件名中的 8 个字符。大多数命令都有一个以.c
(eg umount.c
)结尾的相关源文件,它只留下 6 个字符作为基本名称。
6 个字符的限制也可能是早期开发版本的保留,或者继承自当时确实有 6 个字符限制的 IBM 系统。(早期的 C 实现对标识符有 6 个字符的限制——接受更长的标识符,但编译器只查看前 6 个字符,因此foobar1
和foobar2
是相同的变量。)
(我想我记得有一个umount
手册页将拼写列为来源不明的错误,但我现在找不到了。)
Gre*_*ods 10
似乎有一些错误信息已经坐在这里一段时间了。
umount
命令具有缩写名称的最可能原因是因为它遵循它使用的系统调用的名称: umount()
。
具有该名称的“卸载”系统调用的可能原因umount()
是,早期链接器将外部标识符的长度限制为在某些类型的系统上少至 6 个字符(仅一种情况)(并且保持与此类工具的兼容性是有意义的)当时),“umount”是“unmount”的缩写形式。请参阅The C Programming Language第一版的第 179 页,了解出版时各种感兴趣的系统的外部标识符特征列表。
另请注意,早期的 C 编译器将标识符的前 8 个字符视为重要字符,但允许标识符更长。(K&R 第 33 页)
请注意,符号表中标识符的长度与文件名长度没有任何直接关系,至少在 Unix 中没有(Unix 符号表,从 V1 开始,有 8 个字符作为标识符,尽管在 V1 手册中指出,汇编程序“生成最多 7 个字节的符号" )。