一、卸载现有JDK
[yobhel@hadoop101 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
- rpm -qa:表示查询所有已经安装的软件包
- grep -i:表示过滤时不区分大小写
- xargs -n1:表示一次获取上次执行结果的一个值
- rpm -e --nodeps:表示卸载软件
二、上传包到/opt/software/
[yobhel@hadoop101 software]# ls /opt/software/
三、解压JDK到/opt/module目录下
[yobhel@hadoop101 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
四、配置JDK环境变量
新建/etc/profile.d/my_env.sh文件
[yobhel@hadoop101 module]# sudo vim /etc/profile.d/my_env.sh
添加如下内容,然后保存(:wq)退出
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
让环境变量生效
[yobhel@hadoop101 software]$ source /etc/profile.d/my_env.sh
五、测试JDK是否安装成功
[yobhel@hadoop101 module]# java -version
六、分发JDK
[yobhel@hadoop101 module]$ xsync /opt/module/jdk1.8.0_212/
七、分发环境变量配置文件
[yobhel@hadoop101 module]$ sudo /home/yobhel/bin/xsync /etc/profile.d/my_env.sh
八、分别在hadoop102、hadoop103上执行source
[yobhel@hadoop102 module]$ source /etc/profile.d/my_env.sh
[yobhel@hadoop103 module]$ source /etc/profile.d/my_env.sh
九、其它说明
Linux的环境变量可在多个文件中配置,如/etc/profile,/etc/profile.d/*.sh,/.bashrc,/.bash_profile等,下面说明上述几个文件之间的关系和区别。
bash的运行模式可分为login shell和non-login shell。
例如,我们通过终端,输入用户名、密码,登录系统之后,得到就是一个login shell。而当我们执行以下命令ssh hadoop102 command,在hadoop102执行command的就是一个non-login shell。
这两种shell的主要区别在于,它们启动时会加载不同的配置文件,login shell启动时会加载/etc/profile,/.bash_profile,/.bashrc。non-login shell启动时会加载~/.bashrc。
而在加载/.bashrc(实际是/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段,
因此不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。