java -version 和 $JAVA_HOME 显示错误信息

java -version 和 $JAVA_HOME 显示错误信息

我有一台 RHEL 7 服务器。安装的java版本是jdk1.8.0_151

# ls -l /usr/java
total 0
drwxr-xr-x. 8 root root 255 Apr 24 14:10 jdk1.8.0_151

我设置JAVA_HOME位置并将bin目录添加到PATH变量中/etc/profile

# grep JAVA_HOME /etc/profile
export JAVA_HOME="/usr/java/jdk1.8.0_151/"
export PATH=$JAVA_HOME/bin:$PATH

仍然java -version显示错误信息并且echo $JAVA_HOME不显示任何输出。

# java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
# 
# echo $JAVA_HOME

#

我该如何解决这个问题?

更新

执行以下命令时java -versionecho $JAVA_HOME对用户有效igwuser,但以 root 身份登录时无效。

export PATH=/usr/java/jdk1.8.0_151/bin:$PATH
export JAVA_HOME="/usr/java/jdk1.8.0_151/"

当登录时root

[igwuser@dep4 ~]$ sudo su
[root@dep4 igwuser]# java -version
bash: java: command not found...
[root@dep4 igwuser]# echo $JAVA_HOME

[root@dep4 igwuser]#

为什么以 root 身份登录时不起作用?

更新2

PATH当我登录和注销时变量会重置。这应该是问题所在。

[root@dep4 igwuser]# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[root@dep4 igwuser]# 
[root@dep4 igwuser]# 
[root@dep4 igwuser]# export PATH=/usr/java/jdk1.8.0_151/bin:$PATH
[root@dep4 igwuser]# echo $PATH
/usr/java/jdk1.8.0_151/bin:/sbin:/bin:/usr/sbin:/usr/bin
[root@dep4 igwuser]# 
[root@dep4 igwuser]# exit
exit
[igwuser@dep4 ~]$ sudo su
[root@dep4 igwuser]# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[root@dep4 igwuser]#

答案1

我一直在编辑错误的文件(/etc/profile)。添加以下行来/etc/bashrc解决该问题。

export JAVA_HOME="/usr/java/jdk1.8.0_172-amd64/"
export PATH=$JAVA_HOME/bin:$PATH

谢谢

更新:请参阅下面@jsbillings 的评论。/etc/profile.d/最推荐的是创建自定义脚本并添加以上行。

答案2

  1. 每个用户都有自己的可变环境。因此,一个用户(root 用户)和另一个用户(非 root 用户)的PATH和变量值不同是正常的。JAVA_HOME

  2. 保存环境变量的持久方法:

    • 通过编辑文件添加环境变量~/.bashrcvim ~/.bashrc

    • 加载您在使用中所做的更改~/.bashrcsource ~/.bashrc

相关内容