添加/ etc / environment会导致bash失败

在RHEL 6.7上,我添加了文件/ etc / environment:

JAVA_HOME="/opt/jdk1.8.0_91" JRE_HOME="{JAVA_HOME}/jre" M2_HOME="/usr/local/apache-maven" M2="{M2_HOME}/bin" PATH="{JAVA_HOME}/bin:{JRE_HOME}/bin:{M2}:{PATH}" 

现在login,bash提供了以下错误:

 -bash: id: command not found -bash: id: command not found -bash: id: command not found -bash: uname: command not found 

删除或重命名/ etc / environment会导致问题消失。

注意:我不想使用/ etc / profile,因为我希望这些设置可用于非交互式shell。

/etc/environment不执行variables扩展。 因此,您的PATH现在实际上是{JAVA_HOME}/bin:{JRE_HOME}/bin:{M2}:{PATH} ,这当然不起作用。

如果仅使用bash ,则可能需要考虑在/etc/environment设置$BASH_ENV ,如下所示:

 BASH_ENV=/etc/non-inter-test 

/etc/non-inter-test然后被非交互式shell读取和执行(只有那些,所以你必须在/etc/profile引用同一个文件作为交互式shell),并且可能包含/etc/environment