我知道 Windows 操作系统(通常)不区分大小写。所有 Windows 操作系统(从 Windows 95 到 Windows 7)都是这样吗?是否有任何注册表设置可以使 Windows 区分大小写?
答案1
是的,这适用于所有版本的 Windows。没有办法让 Windows 区分大小写。但请记住,一些最初为 Unix/Linux 开发然后移植的应用程序可能区分大小写。例如,Cygwin 区分大小写。但这种行为极其罕见。
答案2
Microsoft 添加了一个新的区分大小写的标志(属性),可应用于 NTFS 目录(文件夹)。对于设置了此标志(启用)的目录,无论是否指定了 FILE_FLAG_POSIX_SEMANTICS,对该目录中的文件的所有操作都是区分大小写的。这意味着,如果您在标记为区分大小写的目录中有两个仅大小写不同的文件,则所有应用程序都可以访问它们。
从...开始Windows 10 内部版本 17107,微软已经向fsutil.exe命令添加了查看和修改此标志的功能。
要检查目录是否区分大小写,请运行以下命令:
fsutil.exe file queryCaseSensitiveInfo <path>
要将目录标记为区分大小写或不区分大小写:
fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable
答案3
实际上,这取决于您(您的程序)使用的 API / Windows 子系统。
如果您使用“Windows API“(Windows 应用程序的标准),则文件名不区分大小写。但是,如果您使用 POSIX 子系统(又名 Unix 的 Windows 服务),则可以启用区分大小写。
例如,请参阅此 MS 支持文章:使用 Windows XP 和 Interix 子系统或 SFU 启用区分大小写的行为
答案4
这是来自这里。您可以按照其他作者的建议将HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive
注册表值设置为。创建一个名为以下内容的文件并运行它。0
add.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000
然后使用赛格威处理区分大小写的文件名。
为了做到这一点,你需要使用posix=1
中的选项挂载 NTFS 文件系统/etc/fstab
,如下所示本文建议。以下是我的一个片段fstab
:
none /cygdrive cygdrive binary,posix=1,user 0 0
C: /cygdrive/c ntfs binary,posix=1,user,auto 0 0
C:/Users /home ntfs binary,posix=1,user,auto 0 0
完成上述操作后,您将能够使用、等处理区分大小写的bash
文件mc
名git
。
编辑完两者后请确保重新启动。