Shell脚本最好都能自定义自己所需的环境变量,无论什么情况
这样做的好处:
1、很清楚的查到自己脚本使用到的环境变量对应的值;
2、不因为任务外部情况的变化而导致shell脚本无法执行;
?
现实中,常常有开发同学写的shell脚本的环境变量依赖于系统设置的值(譬如设置在/etc/profile),殊不知这种情况是有特定机制的,那就是:需要执行脚本的是当前用户,因为环境变量设置在/etc/profile,意味着当用户登录系统时这些环境变量才生效,这里的前提是登录。如果执行这个脚本的不是当前用户,脚本依赖的环境变量就是无效的。
?
具体场景 写道用A用户登录,echo $JAVA_HOME,会显示出值/usr/xxx/java当A用户执行一个脚本xxx.sh,这个脚本直接使用了$JAVA_HOME,执行命令:sudo -u admin ./xxx.sh,$JAVA_HOME并不是预期的/usr/xxx/java
原因:用admin用户执行xxx.sh,登录用户是A
?