是否可以将关联路径挂载到 WSL?

是否可以将关联路径挂载到 WSL?

我使用了subst R: .一种更快的方式来访问文件夹。

是否可以将R:“驱动器”安装到 WSL 上?当我尝试运行sudo mkdir /mnt/rthen 时sudo mount -t ntfs R: /mnt/r,遇到以下错误:

ntfs-3g: Failed to access volume 'R:': No such file or directory

ntfs-3g 2017.3.23AR.3 integrated FUSE 28 - Third Generation NTFS Driver

Configuration type 7, XATTRS are on, POSIX ACLS are on
Copyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2017 Jean-Pierre Andre
Copyright (C) 2009 Erik Larsson 

Usage:    ntfs-3g [-o option[,...]] <device|image_file> <mount_point>

Options:  ro (read-only mount), windows_names, uid=, gid=,
umask=, fmask=, dmask=, streams_interface=.
Please see the details in the manual (type: man ntfs-3g).

Example: ntfs-3g /dev/sda1 /mnt/windows

News, support and information:  http://tuxera.com 

提前致谢!

在 StackOverflow 上问了同样的问题,但意识到这不是正确的地方......

答案1

虽然 WSL 没有自动的甚至直接的访问subst驱动器,有多种方法可以映射它们。这里有多种路线可供选择,具体取决于您的具体工作流程。

要记住的主要事情是:

  • 在 Linux 中,sudo mount --bind . /mnt/r大致相当于subst R: ..如果您只需要拥有 Linux 同等版本即可,并且不需要在 Windows 下访问相同的驱动器号,那么这可能就是您所需要的。您甚至可以subst在 bash 中创建一个与 Windows 的函数非常接近的函数。

  • 也就是说,bind这里可能有点矫枉过正了。您很可能只需要一个符号链接,例如ln -s /mnt/c/Users/username ~/r.只要您拥有目标位置的权限,就不需要 root。

  • 对于您在 Windows 中使用 创建的映射subst,您可以subst通过调用 PowerShell 来检索 Linux 中的指定路径,例如: powershell.exe -c subst

  • grep您可以使用和sed: 将其过滤为仅 R: 映射powershell.exe -c "subst" | grep "^R" | sed "s/^R:\\\\: => //"(如果有多个驱动器/目录subst,则仅查找 R: 驱动器,然后删除目录路径之前的所有内容)。

  • PowerShell 返回一个额外的换行符(“\r”),因此您必须使用类似tr -d "\r".

  • 您可以使用以下命令将 Windows 路径转换为等效的 Linux/WSL 路径wslpath

将它们放在一起,您就得到了可以将 R: 转换为的脚本/mnt/r(或者~/r如果这样更方便的话):

rpath=$(powershell.exe -c "subst" | grep "^R" | sed "s/^R:\\\\: => //" | tr -d "\r")
sudo mount --bind $(wslpath "${rpath}") /mnt/r/

或者与相反的等价物ln

当然,您需要将其分配给一个函数,以便更容易重复。

相关内容