怎样配置WSL实现文件映射呢?
手把手教你搞定WSL文件映射配置,让Linux和Windows文件无缝互通!
最近我换了台新电脑,装了Windows 11系统,想着用WSL(Windows Subsystem for Linux)跑点Linux命令行工具,结果发现个头疼的问题——在WSL里编辑的文件,Windows里找不到;Windows里存的文件,WSL里又得用绝对路径才能访问,这哪行啊?我平时开发得在两个系统间来回倒腾文件,效率低得要命,我咬咬牙,决定把WSL的文件映射配置彻底搞明白,现在就把我的经验分享出来,保证你看完也能轻松搞定!
WSL文件映射是啥?为啥要配置?
先简单说说WSL文件映射是干啥的,WSL本质上是在Windows上跑了个Linux子系统,但这两个系统的文件系统是分开的,默认情况下,WSL的Linux文件系统藏在Windows的\\wsl$\
路径下,而Windows的文件系统对Linux来说就是个“外部磁盘”,配置文件映射,就是让这两个系统的文件能像在一个盘里一样互相访问,不用再记一堆路径,直接复制粘贴就行,多方便!

举个例子,我之前在WSL里用vim
编辑了个Python脚本,存到了/home/user/scripts/
目录下,结果在Windows里想用VS Code打开,得先找到\\wsl$\Ubuntu-20.04\home\user\scripts\
(假设我用的是Ubuntu 20.04),路径长不说,还容易输错,配置了文件映射后,我直接在Windows资源管理器里就能看到这个目录,双击就开,爽歪歪!
配置前的准备工作
在动手之前,得先确认几个事儿:
-
WSL版本:确保你用的是WSL 2,因为WSL 1的文件系统性能太差,不支持映射,在PowerShell里运行
wsl --list --verbose
,看看版本是不是2
,如果不是,运行wsl --set-version <发行版名称> 2
升级。 -
Windows版本:WSL 2需要Windows 10版本2004或更高,或者Windows 11,在“设置”->“系统”->“里能看到版本号。
-
管理员权限:配置文件映射需要管理员权限,所以后面操作得用管理员身份运行命令提示符或PowerShell。
具体配置步骤
创建共享目录
在Windows里找个地方建个文件夹,专门用来放WSL和Windows共享的文件,比如我在D盘建了个WSL_Share
文件夹。
修改WSL配置文件
WSL的配置文件在%USERPROFILE%\.wslconfig
(用户目录下),如果没有就新建一个,用记事本打开,添加以下内容(根据实际情况修改):
[wsl2] kernelCommandLine = "root=/dev/sdc rootfstype=ext4 rootflags=rw" # 下面这行是关键,指定WSL启动时挂载的Windows目录 additionalMounts = "D:\\WSL_Share=/mnt/d/WSL_Share,type=bind,options=bind,metadata"
这里解释下:
D:\\WSL_Share
是Windows的共享目录路径。/mnt/d/WSL_Share
是WSL里访问的路径(/mnt/d
对应Windows的D盘)。type=bind
表示绑定挂载。options=bind,metadata
确保文件权限正确。
保存后关闭。
重启WSL
在PowerShell里运行wsl --shutdown
关闭所有WSL实例,然后重新启动你的WSL发行版(比如wsl -d Ubuntu-20.04
)。
验证配置
启动WSL后,运行ls /mnt/d/WSL_Share
,看看能不能列出Windows共享目录里的文件,如果能,说明配置成功了!
双向访问测试
- 在WSL里创建文件:运行
touch /mnt/d/WSL_Share/test.txt
,然后在Windows资源管理器里打开D:\WSL_Share
,看看test.txt
是不是出现了。 - 在Windows里修改文件:用记事本打开
test.txt
,输入点内容保存,回到WSL,运行cat /mnt/d/WSL_Share/test.txt
是不是变了。
常见问题解决
权限问题
如果WSL里访问共享目录时提示“Permission denied”,可能是权限没设好,试试在WSL里运行:
sudo chmod -R 777 /mnt/d/WSL_Share
(注意:777
是最大权限,生产环境慎用,这里只是为了测试。)
路径不存在
如果WSL里找不到/mnt/d/WSL_Share
,先确认Windows的共享目录路径对不对,再检查.wslconfig
文件里的路径有没有写错。
WSL启动失败
如果修改配置后WSL启动不了,可能是配置文件语法错了,检查.wslconfig
里的引号、逗号是不是英文的,路径有没有转义(比如D:\\
而不是D:\
)。
进阶用法:自动挂载多个目录
如果需要映射多个目录,可以在.wslconfig
里这样写:
[wsl2] additionalMounts = "D:\\WSL_Share=/mnt/d/WSL_Share,type=bind,options=bind,metadata;E:\\Projects=/mnt/e/Projects,type=bind,options=bind,metadata"
用分号分隔多个挂载点。
配置WSL文件映射其实不难,关键是要理解两个系统的文件系统差异,然后通过挂载点把它们“连”起来,配置好后,开发效率能提升不少,再也不用在两个系统间来回切换路径了,希望我的经验能帮到你,如果有啥问题,欢迎留言讨论!
文章评论