Vagrant部署CentOS7环境变量持久化保存方法问询
哈哈,这个问题太常见了!你用export $MYVAR=test临时设置的环境变量只存活在当前SSH会话里,一旦断开连接,shell进程结束,变量就跟着没了。给你两个实用方案,其中就包含你想要的Vagrantfile自动配置方法:
方法1:手动配置环境变量(快速验证)
如果你只是临时想让变量持久化,或者先验证效果,可以把变量写入shell的配置文件:
- 用户级生效:编辑当前用户的
~/.bashrc文件,在末尾添加一行:export MYVAR=test,然后执行source ~/.bashrc让配置立刻生效。下次SSH登录时,这个变量会自动加载。 - 系统级生效:如果要让所有用户都能使用这个变量,编辑
/etc/profile或者/etc/bashrc文件,同样添加export MYVAR=test,执行source /etc/profile生效即可。
注意:正确的写法是
export MYVAR=test,不要在变量名前加$——$是用来引用变量的,设置变量时不需要哦。
方法2:通过Vagrantfile自动配置(一劳永逸)
这正是你想要的方式,利用Vagrant的provision功能,让虚拟机启动时自动帮你配置环境变量。修改你的Vagrantfile,添加一段shell provisioner:
Vagrant.configure("2") do |config| config.vm.box = "centos/7" # 自动添加环境变量到vagrant用户的.bashrc,避免重复写入 config.vm.provision "shell", inline: <<-SHELL grep -qxF 'export MYVAR=test' /home/vagrant/.bashrc || echo 'export MYVAR=test' >> /home/vagrant/.bashrc # 如果需要系统级生效,替换成下面这行 # grep -qxF 'export MYVAR=test' /etc/profile || echo 'export MYVAR=test' >> /etc/profile SHELL end
这段配置的好处是:
- 用
grep -qxF检查配置是否已存在,避免每次provision都重复写入相同内容 - 虚拟机启动(
vagrant up)或者手动执行vagrant provision时,会自动完成配置 - 配置完成后,下次SSH连接虚拟机时,
MYVAR变量会自动加载可用
如果你的虚拟机已经处于运行状态,不用重启,直接在主机执行vagrant provision就能让配置生效啦。
内容的提问来源于stack exchange,提问作者nyvokub
相关产品推荐
相关产品推荐

