“$PATH”被导出为字面意思“$PATH”

“$PATH”被导出为字面意思“$PATH”

所以在 bash_config 配置文件中我有

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JAVA_PATH=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin

但它不是附加 PATH,而是将其设置为:

[admin@vml1wk111 ~]$ echo $PATH
$PATH:/usr/lib/jvm/java-1.8.0-openjdk/bin:/usr/local/sbin:/usr/sbin:/usr/lib/jvm/java-1.8.0-openjdk/bin:/home/admin/.local/bin:/home/admin/bin

$PATH 是 PATH 中的实际内容,而不是它应该导出的变量。

我究竟做错了什么?

我不得不做

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

每次我登录时。

答案1

这不可能。您必须PATH在其他地方修改了您的变量,因为您的变量/usr/local/sbin是在之后$JAVA_HOME/bin而不是之前。之后是另一个/usr/lib/jvm/java-1.8.0-openjdk/bin带有附加的/home/admin/.local/bin:/home/admin/bin.

并且启动时没有bash_config读取配置文件。

检查你的~/.bash_profile,~/.bashrc~/.profile.

编辑:

要调试,请注释中的所有行/etc/profile.d/java.sh(让每行以 开头#)或将其移动到其他位置作为备份,并检查目录中是否有任何其他文件/etc/profile.d。还要检查整个系统/etc/profile

我仍然不明白为什么/bash_profile应该阅读(如果它不是由您在这些文件之一中获取的)。如果它被读取,则$HOME/.local/bin:$HOME/bin扩展到/home/admin/.local/bin:/home/admin/bin(损坏的末尾部分PATH)并且PATH已经损坏并设置为

$PATH:\
/usr/lib/jvm/java-1.8.0-openjdk/bin:\
/usr/local/sbin:\
/usr/sbin:\
/usr/lib/jvm/java-1.8.0-openjdk/bin

相关内容