Skip to content

为什么 Windows 文件系统大小写不敏感?

Windows 默认使用的是 NTFS 文件系统,但它的「大小写不敏感」这个特性,其实是从更早的历史——MS-DOS 和 Windows 95 一路继承下来的。

想象一下 1980~1990 年代的普通用户,那时候大部分人连键盘都不熟练,更别说搞清楚 File.txtfile.txt 是两个不同文件了。为了降低用户犯错的概率,微软就干脆让文件名不区分大小写。也就是说:

你说的是 FILE.TXT 还是 file.txt?不管啦,反正就是它啦!

在技术上,NTFS 是“大小写保留”(case-preserving)但“不敏感”(case-insensitive)的。就是说它会记住你输入的大小写形式(比如你创建 MyPhoto.jpg 它就记得大写的 MP),但查找文件时不会在意你输的是 myphoto.jpg 还是 MYPHOTO.JPG,它都能找到那个文件。

这个行为背后的核心是「为了照顾普通用户的使用习惯和减少麻烦」。


那 Linux 呢?它的文件系统是怎样的?

Linux 则完全不同,它源于 Unix 的哲学:一切精确,一切可控。Unix 和 Linux 面向的最初用户是程序员、工程师、技术人员,所以:

file.txtFile.txt 是两个不同的东西,你得分清楚。

Linux 上常用的文件系统(如 ext4、xfs 等)是大小写敏感的(case-sensitive),这意味着:

  • main.cMain.c 是两个完全不同的文件
  • 你不能用一个文件名同时访问另一个文件,大小写必须一模一样

对程序员来说,这种精确控制是必要的。比如你可能写了两个版本的文件,或者大小写是某种组织方式的一部分,系统就应该尊重你的意图。

系统大小写敏感?为什么这样设计?
Windows不敏感(但保留大小写)为了用户友好,避免混淆
Linux敏感尊重开发者意图,精准控制