背景
之前就看过说 Windows
不区分大小写,但平时用得少倒也没什么体验,没想到还真能踩一次坑。
上周有同事找我帮忙看个问题,说是配置修改后不生效。排查了下发现编译确实成功了,但烧录进板子的固件包却还是旧固件包。
最终发现是路径下存在名字仅大小写不同的两个文件夹,xxxA
和 xxxa
。xxxA
是他顺手备份时改的,xxxa
才是真正每次编译都会更新的目标文件夹。
这个在 Linux
上没什么问题,但映射到 Windows
上之后就混乱了,明明用烧录工具去选中了 xxxa
下的新文件,但工具真正读取到的却是 xxxA
下的旧文件,自然修改就不能生效了。
其他
据说 Windows
是为了兼容 Dos
,才没有区分大小写,后续就一直不区分了。
Linux
则是一直区分大小写的。Mac
则可以在制作分区时选择此分区是否要区分大小写。
Win10
引入了 WSL
,如上所述 Linux
是需要区分大小写的,为此微软给 NTFS
文件系统加了个 SetCaseSensitiveInfo
标志,可以支持在文件夹级别启用或禁用。启用之后,Windows
程序也可以对这个文件夹下的文件区分大小写了。