win10中wsl如何配置文件(夹)名区分大小写

win10版本1803,内部版本17134.885
由于最近卸载了以前安装的 Legacy 版本的 wsl(ubuntu 16.04),然后重新安装了 ubuntu 18.04. 之后偶然发现居然只在wsl的根目录下创建的文件(夹)区分大小写,而 /mnt/c 和 /mnt/d 都不能区分大小写了。网上的文章大多是让大家使用 fsutil 工具来修改CaseSensitive Flag,但是这样并不能使子文件以及wsl创建的目录生效。
我根据查找的资料,总结了以下方法,来解决这个问题。

  1. 确定windows build 大于 17110,因为 17110 以前的版本不存在这个问题
  2. 进入 wsl,输入mount 命令,查看 /mnt/c 等路径的信息

rootfs on / type lxfs (rw,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
none on /dev type tmpfs (rw,noatime,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,gid=5,mode=620)
none on /run type tmpfs (rw,nosuid,noexec,noatime,mode=755)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,noatime)
none on /run/shm type tmpfs (rw,nosuid,nodev,noatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,noatime,mode=755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noatime)
C: on /mnt/c type drvfs (rw,noatime,uid=0,gid=0,case=off)
D: on /mnt/d type drvfs (rw,noatime,uid=0,gid=0,case=off)

可以看到 C: 和 D: 的挂载选项是 case=off,关于这个选项的说明如下表:

case=dircase=offcase=force
Flag为enable的目录Case SensitiveCase SensitiveCase Sensitive
Flag为disable的目录Case InsensitiveCase InsensitiveCase Sensitive
wsl中创建目录的FlagEnabledDisabledEnabled
  1. 我们可以通过创建或者修改 /etc/wsl.conf 来进行配置。
[automount]
options = "case=dir"
  1. 然后 exit 退出控制台,重新打开 wsl 即可(也有需要重启计算机才能生效的情况)。
  2. 注意,如果你希望使用 case=force 选项,那么你还需要在管理员权限的powershell下执行以下命令
reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1

好了,现在大家就可以愉快的享受“完美”的 Linux 体验了。
注意:由于微软不愿意花费人力与资源,wsl 目前没有办法在 64位系统下运行 32 位的程序。

引用:
Per-directory case sensitivity and WSL
Automatically Configuring WSL
Improved per-directory case sensitivity support in WSL

附一个遍历文件夹修改 CaseSensitive 的 BAT 脚本

for /R /d %%i in (*) do (
    fsutil.exe file setCaseSensitiveInfo "%%i" enable
)
pause
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值