Shell环境变量传递问题

当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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值