日期:2014-05-16  浏览次数:21431 次

linux下shell的脚本无法获取别的用户的环境变量
linux上遇到点问题,也没找到linux社区。
我是用root用户在/etc/profile中修改了java_home和catalina_home,这也能在所有其他用户环境下使用,就不用挨个设置了
可是我在另外一个用户下写了一个sh脚本:
#!/bin/sh
echo $CATALINA_HOME
无法打印出$CATALINA_HOME的内容,只有一个空行。但是在命令提示符下输入:echo $CATALINA_HOME 时就能打印出$CATALINA_HOME 的具体路径。
 
请问这是什么原因呢?谢谢。

------解决方案--------------------
探讨

引用:
那个用户需要重新登录,环境变量才能生效

+_+

------解决方案--------------------
在shell脚本中执行cd命令,会临时进入那个路径,脚本执行结束时,你的当前路径又回到执行shell脚本之前的状态。

你可以这样执行你的脚本,注意前面的点
. yourshell
------解决方案--------------------
探讨

在shell脚本中执行cd命令,会临时进入那个路径,脚本执行结束时,你的当前路径又回到执行shell脚本之前的状态。

你可以这样执行你的脚本,注意前面的点
. yourshell

------解决方案--------------------
你这个脚本是哪个用户执行的?
执行脚本之前,手工执行 echo $catalina_home 看看
------解决方案--------------------
你把这个变量置为环境变量试试
------解决方案--------------------
这是不可能事件,shell命令行里可以用,脚本里肯定也可以用,除非你的/etc/profile里没有export出去,那么相当于在shell里定义了一个普通变量,执行脚本的子进程自然不会见到这个变量,因为只有变量export成为shell的环境变量,才会被子进程继承环境变量。
------解决方案--------------------
探讨

这是不可能事件,shell命令行里可以用,脚本里肯定也可以用,除非你的/etc/profile里没有export出去,那么相当于在shell里定义了一个普通变量,执行脚本的子进程自然不会见到这个变量,因为只有变量export成为shell的环境变量,才会被子进程继承环境变量。