Does the UNIX standard require case-sensitive filesystems

case sensitivityfilesystemsposixstandard

One answer to this question mentions the UNIX 03 certification of OSX. Now AFAIK the standard file system of OSX is/was HFS, which "saves the case of a file that is created or renamed but is case-insensitive in operation" (i.e. it's case-preserving but case-insensitive).

Does the UNIX certification or POSIX require a case-sensitive file system?

Best Answer

According to the POSIX specification:

The system may provide non-standard extensions. These are features not required by POSIX.1-2008 and may include, but are not limited to:

--snip--

  • Non-conforming file systems (for example, legacy file systems for which _POSIX_NO_TRUNC is false, case-insensitive file systems, or network file systems)

--snip--

So it looks like case sensitivity is the norm, but it is possible to support a non-compliant (case-insensitive) file system and still call your product UNIX as long as it can also support case-sensitive file systems.

(edit)

Actually, see this part of the specification:

Two proposals were entertained regarding case folding in filenames:

  1. Remove all wording that previously permitted case folding.

Rationale

Case folding is inconsistent with the portable filename character set and filename definitions (all bytes except <slash> and null). No known implementations allowing all bytes except <slash> and null also do case folding.

  1. Change "though this practice is not recommended:" to "although this practice is strongly discouraged."

Rationale

If case folding must be included in POSIX.1, the wording should be stronger to discourage the practice.

The consensus selected the first proposal. Otherwise, a conforming application would have to assume that case folding would occur when it was not wanted, but that it would not occur when it was wanted.

So it looks like is purposely left ambiguous - it is neither explicitly permitted nor forbidden.