Вы можете смонтировать общий ресурс CIFS/SMB в Linux:
mount -t cifs -o username=<username>,domain=<domain> //server/share /mount/directory
Для этого вам нужно исправить установленный пакет, в Ubuntu он называетсяcifs-utils
Хотя 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
ituted в Linux, вызвав PowerShell, например:powershell.exe -c subst
Вы можете отфильтровать это до только сопоставления R :, используя grep
и sed
: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
.
Конечно, вы захотите присвоить его функции, чтобы было легче повторять.