从 \\wsl$ 地址栏运行的批处理脚本未按预期工作

从 \\wsl$ 地址栏运行的批处理脚本未按预期工作

我一直在使用一些简单的批处理脚本在资源管理器中的任何文件夹中打开我的编辑器 (Neovim)。我将批处理脚本的目录添加到我的 PATH 中,现在我从地址栏运行它们。以下是示例nvim-wsl.bat

pushd %*
wt new-tab --title NeoVim-wsl -d . -p Ubuntu-20.04 bash -i -c nvim
popd

因此,当从地址栏运行时,它会使用 wsl 配置文件在当前目录中打开一个新的 Windows 终端选项卡,然后运行 ​​bash 命令nvim

过去,这种方法在其他各种小脚本中也发挥了奇效。当我在 Windows 文件系统中时,这种方法在 explorer.exe 中运行良好,但当我在浏览时从 explorer.exe 的地址栏尝试该方法时,该方法不起作用,而是在ie\\wsl$中打开 Neovim 。/mnt/c/WindowsC:\Windows

wt new-tab --title NeoVim-wsl -d . -p Ubuntu-20.04 bash -i -c nvim但是,当我从内部命令行运行内部命令时,\\wsl$它可以按预期工作。

我还应该补充一点,这似乎不完全是 UNC 路径不兼容问题。当\\wsl$映射到网络驱动器并运行上述脚本时,我得到了一个 Neovim 实例/home/MyUsername...

到底发生了什么?我该如何解决?谢谢!

答案1

因此,我找到了一种使其发挥作用的方法,尽管我不确定它是否“正确”:

  1. 在 Windows 中将您的“共享”安装\\wsl$为网络驱动器,我们称之为U:
  2. 在 wsl 中将此新驱动器安装为/mnt/u
  3. 来自地址栏的命令explorer.exe现在U:可以识别正确的路径并按预期工作。

我不认为这是“正确的”原因在于,尽管我们在 wsl 文件系统中工作,但由于它是 wsl 中安装的 Windows 驱动器,我认为所有文件操作都通过在文件系统之间转换操作的服务器传递……两次。我没有做很多测试,但我注意到速度有些减慢。我可能会继续在终端中使用 wsl 文件系统。希望其他人可以提供一些澄清!

相关内容