如何在 Linux 子系统中远程控制安装在 Windows 上的 Vagrant?

How to remote control Vagrant installed on Windows, within Linux Subsystem?

根据 Vagrant 的文档,主题 WSL and Vagrant 是高级的。

您需要在 Linux 上安装 Vagrant,因为:

While the vagrant.exe executable provided by the Vagrant Windows installation is accessible from within the WSL, it will not function as expected.

但我不想运行 Vagrant 主要在Linux。我想使用安装在我的 Windows 10 主机上的 Virtual Box。但是我不想离开Linuxbash,只是为了开始Vagrant。

有没有办法从 WSL 中远程控制 Vagrant?

的确,$ vagrant.exe 会导致意外行为,因为 Vagrant(安装在 Windows 上)无法处理 unix 风格的路径。

但实际有效的是:

  1. 当您在 bash 时,输入 $ cmd.exe
  2. 执行你的 Vagrant 命令,例如:C:\> vagrant up
  3. 和return到bash,使用C:\> exit

幸运的是 cmd.exe 有选项,这允许我们通过 cmd.exe:

调用 Vagrant
$ cmd.exe /c vagrant up

这将启动 Windows' 命令行,执行命令,然后 return 到 bash。

更酷的是,当您将其添加到 ~/.bashrc 文件时:

alias cmd='cmd.exe'
alias vagrant='cmd /c vagrant'

您可以在 WSL bash 中使用本机 vagrant 命令(在 Windows 中执行):

$ vagrant up

对我来说,这很有魅力。

注意: 我已经将硬盘驱动器的根安装路径从 /mnt/c 更改为 /c。当我输入 cmd.exe 时,我将进入同一目录。 Windows 确实转换了路径。但是 Windows 无法处理例如~。然后,Windows 将在 C:\Windows\System32

中结束