【发布时间】:2016-01-13 06:44:33
【问题描述】:
我猜这很简单,但我一直在到处寻找:
每当我打开 Vagrant 框时,我希望能够在我的客户操作系统上设置一个环境变量。我不想只在配置时运行,因为每次我的机器停止时都需要重新配置。
这似乎应该是一件非常容易的事情,也许只是 Vagrantfile 中的一些基本内容,但我尝试过的一切都失败了。
没有插件(或有)这可能吗?
【问题讨论】:
标签: vagrant vagrantfile
我猜这很简单,但我一直在到处寻找:
每当我打开 Vagrant 框时,我希望能够在我的客户操作系统上设置一个环境变量。我不想只在配置时运行,因为每次我的机器停止时都需要重新配置。
这似乎应该是一件非常容易的事情,也许只是 Vagrantfile 中的一些基本内容,但我尝试过的一切都失败了。
没有插件(或有)这可能吗?
【问题讨论】:
标签: vagrant vagrantfile
有两种可能:
如果您不想运行任何配置,则需要在来宾操作系统中创建一次,然后将 VM 重新打包为新盒子,这样当您从这个新盒子启动新 VM 时在您打包为新盒子之前,将始终自动定义所有设置
运行配置,不过,这不是一个坏主意。例如像
$script = <<SCRIPT
echo "alias lt='ls -lt'" >> .bashrc
echo "export NEW_ENV_VAR=...." >> .bashrc
SCRIPT
Vagrant.configure(2) do |config|
blablabla
config.vm.provision "shell", inline: $script, privileged: "false", run: "always"
end
这将在.bashrc 文件中设置一些变量(如果您愿意,可以在.profile 中设置)
run: "always" 确保每次启动或重新加载时都会运行此配置(一旦变量到位,可能就不需要了)
privileged: "false" 将确保它与您的 vagrant 用户一起运行,因此它将在 vagrant .bashrc 文件中更新,如果您未指定此选项,请确保引用文件的完整路径 .home/vagrant/.bashrc 否则它将为root用户完成
【讨论】: