您的位置:首页 > 运维架构 > Linux

Linux设置JAVA的全局环境变量时的大坑

2018-01-17 16:09 375 查看
一、背景
由于需要增加一台新的机器用作hadoop集群的客户端,而JAVA环境变量是必需要配置的,而且是需要配置全局的java环境变量(即配置在:/etc/profile 文件中)。于是我就在/etc/profile里加入了java的环境变量:

如图:



1 . 使用source /etc/profile 命令使得配置生效,

2.检查版本是否正确。如图:



然后就以为自己配置正常了,没有问题了。而在这里埋下了一个大地雷,炸了一个大坑。

二、出现了问题:
1.再此登陆系统的时候,使用java -version命令,报错:

If 'java' is not a typo you can use command-not-found to lookup the package that contains it, like this:  cnf java

这就很尴尬了,然后su 到其他的普通用户都报同样的错误,使用source /etc/profile只对当前的shell环境起作用,一旦shell关闭,java就不起作用了。

/etc/profile明明就是全局的变量设置的文件,为啥不对全局起作用呢?

三、问题分析:
具体详细的解决过程就不说了,太繁杂,走错了很多弯路,直接到检查/etc/profile文件中java环境变量的配置处:如图:



1.一开始我不知道export JAVA_HOME=...这些应该放在/etc/profile的文件那个位置,于是我看见A这样一段文字,我就觉得那类似于export这样的设置变量的都放在统一位置。

2.于是我将我的JAVA环境变量配置放在了B处,使其与A类似。

3.问题的关键就是C处的内容,C处的内容是会把我的JAVA环境变量重置了,也就是我的java环境变量根本就不会起作用了(具体脚本执行流程后期详细分析)。

4.也就是类似这样的环境变量不要存放在这个位置,应该放在这段脚本内容的后面。

四、解决方式:
解决方式很简单,就是把java环境变量的配置放置到/etc/profile文件的最末尾。如图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: