【发布时间】:2016-05-28 20:53:27
【问题描述】:
我在这里看到了一些帖子和解决方案,但到目前为止,它们似乎都不适合我。我在 Windows 7 64 位上使用 Vagrant 1.8.1,安装了 env 插件并在 Vagrantfile 中启用了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,但也没有用。注意,bootstrap 文件中有一行重启了 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 可以访问其值。
唯一接近工作的是最初尝试使用内联配置来回显导出命令。但是,如果我执行以下操作,它只会设置环境变量:
vagrant up --provision
vagrant ssh
source /home/vagrant/.profile
[编辑] 可能是我做错了什么。基于以上,我有什么遗漏吗?现在,一旦我将 ssh 连接到主机服务中,我将手动获取文件?
提前致谢。
[编辑]我正在添加内联配置块,以防将来可能对其他人有所帮助。
# 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循环时设置变量
【问题讨论】: