为什么“umount”不拼写为“unmount”?

为什么“umount”不拼写为“unmount”?

我想知道是否有任何历史或实际原因导致该umount命令不存在unmount

答案1

这可以追溯到Unix 的第一版,其中所有标准文件名最多只有 6 个字符长(想想passwd),即使这个版本支持百日咳文件名包含 8 个字符。大多数命令都有一个以.c(eg )结尾的关联源文件umount.c,仅留下 6 个字符作为基本名称。

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

(我想我记得一个umount手册页将拼写列为来源不明的错误,但我现在找不到它。)

答案2

似乎有些错误信息已经存在了一段时间了。

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

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

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

请注意,符号表中标识符的长度有没有什么无论如何直接处理文件名长度,至少在 Unix 中不行(Unix 符号表,自 V1 起,有 8 个字符作为标识符,尽管 V1 手册中指出汇编器生成最多 7 个字节的符号)。

答案3

相关内容