当前位置: 技术问答>linux和unix
linux下shell的脚本无法获取别的用户的环境变量
来源: 互联网 发布时间:2017-02-11
本文导语: linux上遇到点问题,也没找到linux社区。 我是用root用户在/etc/profile中修改了java_home和catalina_home,这也能在所有其他用户环境下使用,就不用挨个设置了 可是我在另外一个用户下写了一个sh脚本: #!/bin/sh echo $CATALINA_HOME...
linux上遇到点问题,也没找到linux社区。
我是用root用户在/etc/profile中修改了java_home和catalina_home,这也能在所有其他用户环境下使用,就不用挨个设置了
可是我在另外一个用户下写了一个sh脚本:
#!/bin/sh
echo $CATALINA_HOME
无法打印出$CATALINA_HOME的内容,只有一个空行。但是在命令提示符下输入:echo $CATALINA_HOME 时就能打印出$CATALINA_HOME 的具体路径。
请问这是什么原因呢?谢谢。
我是用root用户在/etc/profile中修改了java_home和catalina_home,这也能在所有其他用户环境下使用,就不用挨个设置了
可是我在另外一个用户下写了一个sh脚本:
#!/bin/sh
echo $CATALINA_HOME
无法打印出$CATALINA_HOME的内容,只有一个空行。但是在命令提示符下输入:echo $CATALINA_HOME 时就能打印出$CATALINA_HOME 的具体路径。
请问这是什么原因呢?谢谢。
|
在shell脚本中执行cd命令,会临时进入那个路径,脚本执行结束时,你的当前路径又回到执行shell脚本之前的状态。
你可以这样执行你的脚本,注意前面的点
. yourshell
你可以这样执行你的脚本,注意前面的点
. yourshell
|
完全同意。 楼主可以用echo简单测试一下。 你的第2个问题不是export的问题。
|
你这个脚本是哪个用户执行的?
执行脚本之前,手工执行 echo $catalina_home 看看
执行脚本之前,手工执行 echo $catalina_home 看看
|
你把这个变量置为环境变量试试
|
"无法打印出$CATALINA_HOME的内容,只有一个空行。但是在命令提示符下输入:echo $CATALINA_HOME 时就能打印出$CATALINA_HOME 的具体路径。"
明显楼主missing keyword 'export'
|
这是不可能事件,shell命令行里可以用,脚本里肯定也可以用,除非你的/etc/profile里没有export出去,那么相当于在shell里定义了一个普通变量,执行脚本的子进程自然不会见到这个变量,因为只有变量export成为shell的环境变量,才会被子进程继承环境变量。
|
++