如何使用 PATH 更新 .bashrc

如何使用 PATH 更新 .bashrc

我已经在 RedHat Linux 系统上安装了新的 JRE。

lsb_release -i -r
Distributor ID: CentOS
Release:    6.5

我已经更新了指向所需 Java 安装的符号链接:

ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 21 Jul 21 16:27 /usr/bin/java -> /usr/java/jre1.8.0_51

ls -l /usr/java/latest
lrwxrwxrwx. 1 root root 21 Jul 21 15:34 /usr/java/latest -> /usr/java/jre1.8.0_51


ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 20 Jul 21 17:42 /etc/alternatives/java -> /usr/java/glassfish4

但是,现在当我跑步时:

java -version
-bash: java: command not found

环境变量:

env
...
JAVA_HOME=/usr/java/latest
...

所以我将以下行添加到 .bashrc 中:

export PATH="$PATH:$JAVA_HOME"

但仍然得到:

java -version
-bash: java: command not found

已解决 - bashrc 中的正确行:

export PATH=$PATH:/usr/java/jre1.8.0_51/bin/

我不知道为什么,但使用指向符号链接的环境变量export PATH="$PATH:$JAVA_HOME"不起作用,即使它正确解析:

ls -l /usr/java/latest
    lrwxrwxrwx. 1 root root 21 Jul 21 15:34 /usr/java/latest -> /usr/java/jre1.8.0_51

我真的很想明白为什么?

答案1

它不起作用的原因$JAVA_HOME是它$JAVA_HOME$JAVA_HOME/bin.您的二进制文件(javajavacjavaws等)都可以在bin您的 目录中找到$JAVA_HOME,而不是在其$JAVA_HOME本身中。

您问题中的工作路线指向/usr/java/jre1.8.0_51/bin;变量JAVA_HOME指向/usr/java/latest,这是到 的符号链接/usr/java/jre1.8.0_51。这显然不是同一个地方。

如果你使用

export PATH="$PATH:$JAVA_HOME/bin"

它会起作用的。

相关内容