Answers:
这可以追溯到Unix的第一版,在该版本中,所有标准文件名最多只能有6个字符长(认为passwd
),即使该版本支持文件名中最多8个字符。大多数命令都有一个以.c
(例如umount.c
)结尾的关联源文件,该文件的基本名称只剩下6个字符。
6个字符的限制也可能是早期开发版本的保留,或者是从当时有6个字符的限制的IBM系统继承而来。(早期C实现对标识符的6个字符的限制-更长标识符被接受但编译器只看着前6个字符,所以foobar1
和foobar2
。是相同的变量)
(我以为我记得一个umount
手册页,其中列出了该拼写为未知来源的错误,但现在找不到。)
directory
,尚不适合)。因此,我想知道为什么将passwd
其截断为6个字符(也没有passwd
命令/etc/passwd
)。
urandom
似乎有一些错误信息坐在这里已有一段时间了。
该umount
命令具有缩写名称的最可能的原因是,它源自其使用的系统调用的名称: umount()
。
具有该名称的“卸载”系统调用的可能原因umount()
是因为早期的链接程序在某些类型的系统上将外部标识符的长度限制为仅6个字符(仅一种情况)(并且与这些工具保持兼容是有意义的)当时),而“ umount”是“ unmount”的逻辑形式。有关发布时各种感兴趣的系统的外部标识符特征的列表,请参见《 C编程语言》第一版的第179页。
还要注意,早期的C编译器将标识符的前8个字符视为有效,但允许标识符更长。(K&R第33页)
请注意,符号表中标识符的长度与文件名的长度没有任何直接关系,至少在Unix中没有(Unix符号表自V1起具有8个字符的标识符,尽管在V1手册中指出,汇编器“ 生成最多7个字节的符号 “”。
.c
(或.s
)扩展名= 8个字符的文件名限制。