我有一台 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 -version
,echo $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
每个用户都有自己的可变环境。因此,一个用户(root 用户)和另一个用户(非 root 用户)的
PATH
和变量值不同是正常的。JAVA_HOME
保存环境变量的持久方法:
通过编辑文件添加环境变量
~/.bashrc
:vim ~/.bashrc
加载您在使用中所做的更改
~/.bashrc
:source ~/.bashrc