将 UNC 路径转换为 ​​WSL 路径

将 UNC 路径转换为 ​​WSL 路径

我创建了一个别名作为这个问题。它按预期运行,只是每当它从主目录运行时,它都会输出非致命错误:

'\\wsl$\Ubuntu-18.04\home\hashim'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.

根据杰出的 WSL 贡献者,只需将 WSL 主目录所在的 UNC 路径更改为以下任何位置即可解决这个问题/mnt/

alias lsd="builtin cd $(wslpath $(cmd.exe /c "echo %USERPROFILE%") | tr -d '\r') && cmd.exe /c 'wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType'"

上述操作可以在运行命令之前将 Windows 用户配置文件路径转换为 ​​WSL 路径并将 CD 放入其中,但它的缺点是它需要cd任意路径(在本例中为 Windows 用户配置文件),并且不能带回到上一个目录。

我对两者都进行了快速尝试:

  • 将 ~ 处的当前 UNC 路径转换为/mnt/使用wslpath
  • 使用pushdpopd手动切换到任意/mnt/目录,然后切换回原始目录

...但我没能使这两种解决方案都发挥作用。

我想要的可能吗?

答案1

作为一种解决方法,你可以添加&& builtin cd -与 bash 等效的cd $OLDPWD

但它有一个缺点:你会丢失 $OLDPWD 的先前值。我个人觉得这很烦人,而且对于经常运行的命令来说不是一个好的解决方案。我认为在这种情况下这是可以接受的。

希望其他人能想出更好的解决方案!

相关内容