我想知道umount命令不是unmount的历史原因还是实际原因。
发布于 2011-03-21 21:21:20
这可以追溯到Unix的第一版,在那里所有的标准文件名最多只有6个字符长(想想passwd),尽管这个版本支持文件名中的8个字符。大多数命令都有一个以.c结尾的相关源文件(例如umount.c),它只为基名留出6个字符。
6个字符的限制也可能是早期开发版本的保留,或者是继承自当时有6个字符限制的IBM系统。(早期的C实现对标识符有6个字符的限制,较长的标识符被接受,但编译器只查看前6个字符,因此foobar1和foobar2是相同的变量。)
(我记得我记得一个umount手册页面,它把拼写列为未知来源的错误,但现在找不到了。)
发布于 2017-03-04 02:24:40
似乎有一些错误的信息在这里坐了一段时间了。
使用缩写名称的umount命令最有可能的原因是它遵循它使用的系统调用的名称:umount()。
具有umount()名称的“卸载”系统调用的可能原因是,早期的链接器将外部标识符的长度限制在某些类型系统上的6个字符(仅一种情况下)(当时保持与此类工具的兼容性是有意义的),而"umount“是”卸载“的一种逻辑缩写形式。参见C语言第一版的第179页,以获得在发布时感兴趣的各种系统的外部标识符特征的列表。
还请注意,早期的C编译器将标识符的前8个字符视为重要字符,但允许标识符更长。(K&R第33页)
请注意,符号表中的标识符长度与文件名长度没有任何直接关系,至少在Unix中没有(Unix符号表,因为V1有8个标识符字符,尽管在V1手册中注意到汇编程序“生成最多7个字节的符号”)。
发布于 2011-03-21 21:16:12
出于同样的原因,creat系统调用没有拼写为create?
https://unix.stackexchange.com/questions/9832
复制相似问题