Vagrant 从命令行指定headless或GUI

Vagrant 从命令行指定headless或GUI,vagrant,Vagrant,根据以下说明,在GUI模式下运行Vagrant VM很容易: config.vm.provider "virtualbox" do |v| v.gui = true end 但是,是否有办法从命令行执行此操作,例如在运行vagrant up时?比如说, vagrant up --gui vagrant up --headless 不同的用户可能更喜欢启动UI或不启动UI;似乎不应该在每个人都将使用的Vagrant文件中指定它 GUI选项是特定于提供程序的(并且只有极少数提供程序支持它),

根据以下说明,在GUI模式下运行Vagrant VM很容易:

config.vm.provider "virtualbox" do |v|
  v.gui = true
end
但是,是否有办法从命令行执行此操作,例如在运行
vagrant up
时?比如说,

vagrant up --gui
vagrant up --headless

不同的用户可能更喜欢启动UI或不启动UI;似乎不应该在每个人都将使用的Vagrant文件中指定它

GUI选项是特定于提供程序的(并且只有极少数提供程序支持它),因此顶级vagrant命令为其添加一个开关是不合适的

根据我的经验,GUI最常见的用例有:

  • 运行桌面类型的计算机,在这种情况下,设置在文件中是有意义的
  • 调试启动等问题,当您只想启用它一小会儿
如果您有一个打开和关闭GUI的正常设置,那么您可以使用环境变量。例如,Vagrantfile中的类似内容:

# Returns true if `GUI` environment variable is set to a non-empty value.
# Defaults to false
def gui_enabled?
  !ENV.fetch('GUI', '').empty?
end

Vagrant.configure('2') do |config|
  config.vm.provider 'virtualbox' do |v|
    v.gui = gui_enabled?
  end
end
然后在*nix系统的命令行上:

GUI=1 vagrant up
在Windows上:

set GUI=1
vagrant up

谢谢你!并非所有虚拟机都应该支持这两种模式是有道理的,这也可能由提供商决定。我正在使用Vagrant编译一个游戏引擎,它可以作为客户端或专用服务器运行。从长远来看,这听起来像是两个不同的文件和配置设置,但我现在肯定会使用这个环境变量技巧!尝试重新安装内核头和狗屎之前(幸运的是),我遇到了你的答案。这应该在官方文档(不介意大写)xD上