Windows-Subsystem-for-Linux
是否可以將關聯路徑掛載到 WSL?
我使用
subst R: .
了一種更快的方式來訪問文件夾。是否可以將
R:
“驅動器”安裝到 WSL?當我嘗試執行sudo mkdir /mnt/r
thensudo 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 上問了同樣的問題,但意識到這不是這樣做的正確地方……😅
雖然 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
您可以通過呼叫 PowerShell 來檢索subst
Linux 中的匹配路徑,例如:powershell.exe -c subst
grep
您可以使用和sed
: 將其過濾到僅 R: 映射powershell.exe -c "subst" | grep "^R" | sed "s/^R:\\\\: => //"
(如果有多個驅動器/目錄subst
,請僅找到 R: 驅動器,然後刪除目錄路徑之前的所有內容)。- PowerShell 返回一個額外的換行符(“\r”),因此您必須使用
tr -d "\r"
.wslpath
您可以使用該命令將 Windows 路徑轉換為等效的 Linux/WSL 。把它們放在一起,你就得到了可以把你的 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
相反的等價物。當然,您需要將它分配給一個函式,以便更容易重複。