我创建了一个别名作为这个问题。它按预期运行,只是每当它从主目录运行时,它都会输出非致命错误:
'\\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
- 使用
pushd
和popd
手动切换到任意/mnt/
目录,然后切换回原始目录
...但我没能使这两种解决方案都发挥作用。
我想要的可能吗?
答案1
作为一种解决方法,你可以添加&& builtin cd -
与 bash 等效的cd $OLDPWD
但它有一个缺点:你会丢失 $OLDPWD 的先前值。我个人觉得这很烦人,而且对于经常运行的命令来说不是一个好的解决方案。我认为在这种情况下这是可以接受的。
希望其他人能想出更好的解决方案!