我在这里看到了一些帖子和解决方案,但到目前为止,它们似乎都不适合我。我在Windows 7 64位上使用Vagrant 1.8.1,并在Vagrantfile中安装并启用了env插件config.env.enable
。[更新]我可能做错了什么或错过了什么?
我正在尝试设置一个string=123abc
类型的环境变量。我从Vagrantfile中的内联配置开始:
config.vm.provision "shell", inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
SHELL
我试过下面的source /home/vagrant/.profile
(在回声之后),但它不起作用。。
然后,我尝试将源代码行添加到配置文件(bootstrap.sh)中
此外(在引导程序文件中)尝试了vagrant ssh && source /home/vagrant/.profile && exit
,但也不起作用。注意,引导文件中有一行用于重新启动apache。
我试图在php.ini
文件中设置一个var=值
; arbitrary, set host IP for Vagrant
vm_host_ip=192.168.33.10
这也没有奏效。我尝试(在httpd.conf中)添加SetEnv VMHOSTIP "192.168.33.10"
然后(在一个共享的php文件中),我基本上希望shell在$_SERVER和$_ENV上打印_r,看看上面的任何尝试是否能够正确设置环境变量,以便php可以访问其值。
唯一接近工作的是最初尝试使用内联提供来回显export命令。然而,只有当我执行以下操作时,它才会设置环境变量:
vagrant up --provision
vagrant ssh
source /home/vagrant/.profile
[编辑]可能是我做错了什么。基于以上内容,我还缺少什么吗?。现在,我将在ssh进入主机服务后手动获取文件源?
提前谢谢。
[EDIT]我正在添加内联供应块,以备将来帮助他人。
# privileged false acts like a sudo, so we can do commands as root.
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
# Add 2 lines (comment and command) to .bashrc if they are not already there.
if grep -Fxq "# source our profile" /home/vagrant/.bashrc
then
# do nothing since we found the target text.
echo "we found the source line we need in .bashrc n"
else
# Add the lines (comment and command) to .bashrc
echo "# source our profile" | tee -a /home/vagrant/.bashrc
echo "source /home/vagrant/.profile" | tee -a /home/vagrant/.bashrc
fi
SHELL
这种方法:
- 是基于公认答案和其他研究中提供的一些有用提示
- 设置执行
vagrant reload --provision
或完成vagrant destroy, vagrant up
循环时的变量
我会做
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
SHELL
这样一来,.profile
文件将由流浪用户所有——在您的情况下,该文件由root用户所有,因此可能会出现问题。
如果您仍然有问题,您可以在供应块中执行source
,以便完全模拟您手动执行的
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
source /home/vagrant/.profile
SHELL