如何编辑 fstab 以挂载绑定 wsl2 启动时 PATH 中有空格的目录

如何编辑 fstab 以挂载绑定 wsl2 启动时 PATH 中有空格的目录

我目前在 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

所以可以说,情况已经正式解决了。

相关内容