为了开发目的,我有流浪汉运行Ubuntu.我已经使用shell脚本配置程序来下载/安装我的依赖项并创建一些别名,但是我在使用配置器创建环境变量(用于我的项目中的几个标志)方面遇到了障碍.最初我有类似的东西:
export MY_VAR='value'
Run Code Online (Sandbox Code Playgroud)
进入我的配置脚本,但后来发现你无法通过正常运行来从shell脚本中添加环境变量.很公平,所以我试着改变我的Vagrantfile行:
config.vm.provision "shell", inline: “source setup.sh"
Run Code Online (Sandbox Code Playgroud)
哪个没解决问题.环境变量仍然不存在.我尝试直接添加导出作为内联:
config.vm.provision "shell", inline: “export MY_VAR='value'"
Run Code Online (Sandbox Code Playgroud)
没运气.当我进入ssh时,仍然没有全球环境.有没有办法使用shell脚本来设置bash环境变量,或者是时候把它放在shell配置器上并学习厨师了吗?
rje*_*rje 33
您应该让配置脚本为.profile添加一行:
echo "export VAR=value" >> ~/.profile
Run Code Online (Sandbox Code Playgroud)
登录时,bash会读取.profile脚本,并设置变量.
Eli*_*gem 17
看到已接受的答案确实export VAR=value
每次运行时都会在.profile(或.bashrc)文件中添加一个文件vagrant provision
,这就是我如何快速添加环境变量
source ~/.profile && [ -z "$VAR" ] && echo "export VAR=value" >> ~/.profile
Run Code Online (Sandbox Code Playgroud)
分解:
source ~/.profile
:加载当前.profile
文件[ -z "$VAR"]
:检查是否VAR
设置,如果不是:echo "export VAR=value" >> ~/.profile
:将导出行添加到 .profile
把它们放在一起:
我通常使用puphpet为我的流浪盒,所以我倾向于坚持它使用的目录结构,这意味着我的配置脚本puphpet/shell/*
(相对于Vagrantfile
文件).在该文件中,您可以根据需要添加任意数量的环境变量:
#!/usr/bin/env bash
#Replace .profile with .bashrc if required
source ~/.profile
if [ -z "$VAR" ]; then # only checks if VAR is set, regardless of its value
echo "export VAR=value" >> ~/.profile
fi
#other env variables and profile stuff here
Run Code Online (Sandbox Code Playgroud)
如果要将环境变量设置为特定值,即使它们已设置,也可以替换[ -z "$VAR" ]
为此(如Maks3w建议的那样):
if [ -z "$VAR" ] || [ "$VAR" != "value" ]; then
#same as before
fi
Run Code Online (Sandbox Code Playgroud)
然后只需将其添加到您的Vagrantfile:
config.vm.provision "shell", path: "puphpet/shell/your-script.sh"
Run Code Online (Sandbox Code Playgroud)
那应该是诀窍......
这个答案显示了如何VagrantFile
使用Ruby HEREDOC(Here doc)语法添加环境变量
$install_user_vars = <<SCRIPT
source ~/.profile
if [ -z "$VAR" ] || [ "$VAR" != "value" ]; then
echo "export VAR=value" >> ~/.profile
fi
if [ $(pwd) != "/vagrant" ]; then
echo "cd /vagrant" >> ~/.profile
fi
SCRIPT
config.vm.provision "shell", inline: $install_user_vars
Run Code Online (Sandbox Code Playgroud)
注意:关闭SCRIPT
必须是他自己行中的第一个字符
这是我的$GOPATH
工作方式:
config.vm.provision "shell", inline: <<-SHELL
echo -n > /etc/profile.d/gopath.sh
echo 'export GOPATH=$HOME/go' >> /etc/profile.d/gopath.sh
echo 'export PATH=$PATH:$GOPATH/bin' >> /etc/profile.d/gopath.sh
SHELL
Run Code Online (Sandbox Code Playgroud)
必须使用单引号和$HOME
(而不是~
)---我不能使它工作。
归档时间: |
|
查看次数: |
22527 次 |
最近记录: |