UNIX 标准是否需要区分大小写的文件系统?

Mar*_*der 8 filesystems standard posix case-sensitivity

一个答案这个问题提到了OSX的UNIX 03认证。现在 AFAIK OSX 的标准文件系统是/曾经是HFS,它“保存了创建或重命名但在操作中不区分大小写的文件的情况”(即它保留大小写不区分大小写)。

UNIX 认证或 POSIX 是否需要区分大小写的文件系统?

Wya*_*ard 4

根据 POSIX 规范

系统可能提供非标准扩展。这些是 POSIX.1-2008 不需要的功能,可能包括但不限于:

--剪断--

  • 不合格的文件系统(例如,_POSIX_NO_TRUNC 为 false 的旧文件系统、不区分大小写的文件系统或网络文件系统)

--剪断--

因此,看起来区分大小写是常态,但支持不兼容(不区分大小写)的文件系统并且仍然可以将您的产品称为 UNIX,只要它也支持区分大小写的文件系统。

(编辑)

实际上,请参阅规范的这一部分

关于文件名中的大小写折叠,提出了两项​​建议:

  1. 删除以前允许大小写折叠的所有措辞。

基本原理

大小写折叠与可移植文件名字符集和文件名定义(除 <slash> 和 null 之外的所有字节)不一致。没有已知的实现允许除 <slash> 和 null 之外的所有字节也进行大小写折叠。

  1. 将“尽管不建议这样做”更改为“尽管强烈建议不要这样做”。

基本原理

如果 POSIX.1 中必须包含大小写折叠,则措辞应更强硬以阻止这种做法。

共识选择了第一个提案。否则,符合要求的应用程序必须假设在不需要时会发生大小写折叠,但在需要时不会发生。

所以它看起来像是故意留下歧义的——既没有明确允许也没有明确禁止。

  • 具有不区分大小写的文件系统的 OS X 显然不符合要求。事实上,以非默认(但兼容)配置注册的事实显然并不意味着每个类 UNIX 操作系统的每个扩展都突然兼容。如果你的推理是合理的,那么任何类 UNIX 操作系统的每个扩展都会以某种方式兼容......以 Windows 为例:仅仅因为 microsoft windows 有一个兼容 POSIX 的子系统并不意味着 win32 API 在某种程度上兼容 POSIX,这仅意味着子系统是。OSX 也是如此——它只兼容区分大小写的文件系统,而它确实支持这一点。 (4认同)