添加 /etc/environment 导致 bash 失败

添加 /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}"

现在登录时,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。

答案1

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

如果仅使用bash,您可能需要研究如下$BASH_ENV设置:/etc/environment

BASH_ENV=/etc/non-inter-test

然后,非交互式 shell 会读取并执行where /etc/non-inter-test(并且只能由非交互式 shell 读取和执行,因此您必须在交互式 shell 中引用相同的文件/etc/profile),并且可能包含现在您的/etc/environment.

相关内容