Tys*_*ann 6 paths environment-variables etc
使用 $FOO 语法在 /etc/environment 中有“指针”是否有效?现在我的 /etc/environment 看起来像这样:
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
MAVEN_HOME=/usr/bin/apache-maven/apache-maven-3.0.4
M2_HOME=$MAVEN_HOME
M2=$MAVEN_HOME/bin
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME/bin:$MAVEN_HOME/bin
Run Code Online (Sandbox Code Playgroud)
我没有得到我期望的结果:
~$ echo $JAVA_HOME
/usr/lib/jvm/java-6-openjdk
~$ echo $MAVEN_HOME
/usr/bin/apache-maven/apache-maven-3.0.4
~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/bin:/usr/games:$JAVA_HOME/bin:$MAVEN_HOME/bin
Run Code Online (Sandbox Code Playgroud)
我没有找到太多关于 的文档/etc/environment,但事情不像你期望的那样工作的原因是它“不是一个脚本文件”,因此没有被 shell 处理,所以引用以前定义的变量不会工作。这解释了您所看到的行为。
您最好在家中定义这些类型的环境变量,在.profile或 中.bashrc,或者如果您需要为所有用户使用它们,则在/etc/profile.d或 中/etc/bash.bashrc。
有一个关于设置环境变量的一些非常广泛的文件在这里,它指向要么.profile或.bashrc才能把这个东西的首选之地。