Rhel

如何使用 PATH 更新 .bashrc

  • July 22, 2015

我在我的 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

我真的很想明白為什麼?

它不起作用的原因$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"

它會起作用的。

引用自:https://unix.stackexchange.com/questions/217654