为什么“ umount”没有拼写为“ unmount”?


64

我想知道是否有任何历史或现实原因的umount命令不是unmount

Answers:


79

这可以追溯到Unix的第一版,在该版本中,所有标准文件名最多只能有6个字符长(认为passwd),即使该版本支持文件名中最多8个字符。大多数命令都有一个以.c(例如umount.c)结尾的关联源文件,该文件的基本名称只剩下6个字符。

6个字符的限制也可能是早期开发版本的保留,或者是从当时有6个字符的限制的IBM系统继承而来。(早期C实现对标识符的6个字符的限制-更长标识符被接受但编译器只看着前6个字符,所以foobar1foobar2。是相同的变量)

(我以为我记得一个umount手册页,其中列出了该拼写为未知来源的错误,但现在找不到。)


21
6个字符的命令名称+ .c(或.s)扩展名= 8个字符的文件名限制。
geekosaur 2011年

@geekosaur:嗯,对了,源文件。如果您写一个答案,我将删除我的。
吉尔斯(Gilles)

5
恩,只要有需要就注释一下。
geekosaur 2011年

@geekosaur:我也想到了手册页,但是V1没有手册命令(其中一个手册页称为directory,尚不适合)。因此,我想知道为什么将passwd其截断为6个字符(也没有passwd命令/etc/passwd)。
吉尔斯

2
也许是因为希腊οὐ后缀,意思是“不”,这也可以解释的urandom
安东尼·加西亚

8

似乎有一些错误信息坐在这里已有一段时间了。

umount命令具有缩写名称的最可能的原因是,它源自其使用的系统调用的名称: umount()

具有该名称的“卸载”系统调用的可能原因umount()是因为早期的链接程序在某些类型的系统上将外部标识符的长度限制为仅6个字符(仅一种情况)(并且与这些工具保持兼容是有意义的)当时),而“ umount”是“ unmount”的逻辑形式。有关发布时各种感兴趣的系统的外部标识符特征的列表,请参见《 C编程语言》第一版的第179页。

还要注意,早期的C编译器将标识符的前8个字符视为有效,但允许标识符更长。(K&R第33页)

请注意,符号表中标识符的长度与文件名的长度没有任何直接关系,至少在Unix中没有(Unix符号表自V1起具有8个字符的标识符,尽管在V1手册中指出,汇编器生成最多7个字节的符号 “”


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.