当shell新开一个script的时候,可以告诉子进程继承来自父进程的environment variables.
export ENVROOT=/apollo/env/zhc
可以用printenv来打印当前所有的环境变量供debug使用。今天遇到一个很奇怪的问题,已经export了,但是新的script却没有这个环境变量。后来才发现是因为user不同:
比如
1 export ENVROOT=/apollo/env/zhc
2 sudo -u admin new_script.sh
3 因为切换了用户,所以环境变量并没有继承。
4 如果直接new_script.sh则会发现,环境变量已经继承。
解决办法:
1 告诉sudo,传递所有环境变量到sudo environment中。
sudo -E -u admin new_script.sh
2 只传递使用的环境变量。
sudo ENVROOT=/apollo/env/zhc -u admin new_script.sh
原文:http://blog.csdn.net/hongchangfirst/article/details/104368664
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst