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/binjavajavacjavawsbin$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"

動作します。

関連情報