共享环境文件

时间:2013-06-13 22:19:52

标签: bash unix environment-variables sh .profile

我需要设置环境变量JAVA_HOME,CATALINA_HOME,PATH等。我认为在共享文件〜/ .setenv中设置它们是个好主意,然后在我的〜/ .profile中调用它:

... code ...

/home/myusername/.setenv

当我登录时,我看到回声打印我的JAVA_HOME变量并且设置正确,但是当我手动回显$ JAVA_HOME时,它什么都不打印。

为什么我的.setenv脚本没有设置我的变量?

这是我的.setenv文件:

export JAVA_HOME=/usr/local/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/var/lib/apache-tomcat-6.0.37
export CATALINA_BASE=/var/lib/apache-tomcat-6.0.37

whoami

echo "JAVA_HOME set to $JAVA_HOME"
echo "CATALINA_HOME set to $CATALINA_HOME"
echo "You can change this in /home/myusername/.setenv"

登录时的输出:

Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-19-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Thu Jun 13 16:11:21 2013 from 192.168.1.200
o#: command not found
myusername
JAVA_HOME set to /usr/local/jdk1.6.0_45
CATALINA_HOME set to /var/lib/apache-tomcat-6.0.37
You can change this in /home/myusername/.setenv

1 个答案:

答案 0 :(得分:2)

您需要 .setenv脚本,以便变量赋值在当前shell中完成,而不是在子shell中完成。子shell中的变量赋值对父shell没有影响。

. /home/myusername/.setenv