![如何编辑 fstab 以挂载绑定 wsl2 启动时 PATH 中有空格的目录](https://linux22.com/image/200913/%E5%A6%82%E4%BD%95%E7%BC%96%E8%BE%91%20fstab%20%E4%BB%A5%E6%8C%82%E8%BD%BD%E7%BB%91%E5%AE%9A%20wsl2%20%E5%90%AF%E5%8A%A8%E6%97%B6%20PATH%20%E4%B8%AD%E6%9C%89%E7%A9%BA%E6%A0%BC%E7%9A%84%E7%9B%AE%E5%BD%95.png)
我目前在 Windows 上使用 wsl2,并在本地并行使用 MS OneDrive 进行学习。实际上,我将每个文件与我的 OneDrive 帐户同步。因为我的 Onedrive 文件夹的名称如下:
Onedrive - 学校名称
对于我的课程,我需要使用 WSL2,并且我想访问我的 Windows 文件,路径中不带空格。我找到的解决方案是使用 mount bind 命令:
sudo mount --bind /mnt/c/Users/MyName/OneDrive\ -\ SchoolName/Project ~/Project/
这实际上有效,但我想编辑 fstab,以便在每次启动 WSL 时不键入命令。我不知道该怎么做,因为我发现的每个辅导都不起作用。
谢谢您的提示!
答案1
fstab(5)
\040
可用于替换空格的文档……但仅限于第二个字段;你在第一个字段中有它。
一个快速的解决方法是在某处创建一个到源目录的符号链接,然后绑定安装:
sudo ln -s /mnt/c/Users/MyName/OneDrive\ -\ SchoolName/Project /.onedrive-link
然后您可以绑定挂载/.onedrive-link
到~/Project/
.
此时,明显的问题是,还需要绑定挂载吗?你可以这样做:
sudo rmdir ~/Project
ln -s /mnt/c/Users/MyName/OneDrive\ -\ SchoolName/Project ~/Project
您最终会得到一个符号链接,该符号链接甚至属于您的普通用户,并且不需要修改超级用户权限。
答案2
有一个简单的解决方案,只需执行 ls 命令并按 Tab 键,直到到达文件夹。
例如:
ls /volume1/test/etc(每个 / so putty 或您使用的任何内容后面的选项卡完成文件夹的名称,它会自动添加您需要的空格符号)。
到达要安装的文件夹后,只需将“ls”替换为“mount --bind”,当然在第一个路径之后添加目的地。
这样就可以避免头痛!
干杯。
答案3
尝试这个:
我在 Fedora 35 上所做的就是打开磁盘并编辑其挂载选项。不幸的是,wsl 不提供 GUI,所以我会尽力为您提供一个基于我自己的 fstab 的示例
/mnt/c/Users/MyName/OneDrive / ntfs-3g defaults,bind 0 0
该bind
选项应该可以解决问题
答案4
如果你不能使用磁盘,你可以使用终端文件编辑器nano
$ sudo nano /etc/fstab
#at the end of document
/source /destination none defaults,bind 0 0
我自己不使用默认选项,我推荐这些:
/mnt/c/Users/MyName/OneDrive /home/(your username)/Project nosuid,nodev,nofail,x-gvfs-show,uid=1000,gid=1000,dmask=027,fmask=137,bind 0 0
如果有效请务必告诉我们。
编辑1:
我知道已经过去很长时间了,但我认为情况不再需要干涉了。现在我是 Windows 11 Insider(内部版本 25115),并且 Hyper-V 处于活动状态且 Hypervisor 处于禁用状态。我可以在资源管理器上看到我的 Ubuntu WSL,如果我有权限,我可以对其进行写入。并且驱动器会自动安装。这是我的 fstab(几乎是空的):
LABEL=cloudimg-rootfs / ext4 defaults 0 1
这是我的 /mnt (使用 Ubuntu WSL 中的 ls 命令):
mohsentux@LovelyBloom:/mnt$ ls
c d e f wsl wslg
所以可以说,情况已经正式解决了。