读书人

linux下shell的脚本无法获取别的用户的

发布时间: 2012-04-23 13:17:38 作者: rapoo

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的环境变量,才会被子进程继承环境变量。

读书人网 >UNIXLINUX

热点推荐