背景
之前就看過說 Windows
不區分大小寫,但平時用得少倒也沒什么體驗,沒想到還真能踩一次坑。
上周有同事找我幫忙看個問題,說是配置修改后不生效。排查了下發現編譯確實成功了,但燒錄進板子的固件包卻還是舊固件包。
最終發現是路徑下存在名字僅大小寫不同的兩個文件夾,xxxA
和 xxxa
。xxxA
是他順手備份時改的,xxxa
才是真正每次編譯都會更新的目標文件夾。
這個在 Linux
上沒什么問題,但映射到 Windows
上之后就混亂了,明明用燒錄工具去選中了 xxxa
下的新文件,但工具真正讀取到的卻是 xxxA
下的舊文件,自然修改就不能生效了。
其他
據說 Windows
是為了兼容 Dos
,才沒有區分大小寫,后續就一直不區分了。
Linux
則是一直區分大小寫的。Mac
則可以在制作分區時選擇此分區是否要區分大小寫。
Win10
引入了 WSL
,如上所述 Linux
是需要區分大小寫的,為此微軟給 NTFS
文件系統加了個 SetCaseSensitiveInfo
標志,可以支持在文件夾級別啟用或禁用。啟用之后,Windows
程序也可以對這個文件夾下的文件區分大小寫了。