使用shell脚本去source /etc/profile,并不会立即生效,需要把finalshell连接页面关闭再打开才生效

image.png--
Linux系统下,多台服务器安装jdk的时候,使用shell脚本去source /etc/profile,并不会立即生效,而是需要把finalshell(远程软件)连接页面关闭再打开才生效(也不需要重启服务器)。比如执行完shell脚本,关闭如图的yixiao01连接端口再打开,即可显示jdk的版本(不关闭则不会显示)

下面是我的shell脚本:

#!/bin/bash

install_jdk() {
    echo "批量创建文件夹"
    index=3
    for ((i=1; i<=index; i++))
    do
        ssh yixiao0${i} "mkdir -p /export/server/"
        ssh yixiao0${i} "mkdir -p /export/software/"
    done
    echo "文件夹全部创建完成"
    
    echo "开始安装jdk"
    echo "开始下载jdk"
    if [[ ! -f /export/software/jdk-8u171-linux-x64.tar.gz ]]; then
    wget --no-check-certificate -P /export/software https://repo.huaweicloud.com/java/jdk/8u171-b11/jdk-8u171-linux-x64.tar.gz
    echo "下载jdk完成"
    else
    echo "jdk安装包已存在"
    fi
    
    echo "开始解压jdk"
    tar -zxf /export/software/jdk-8u171-linux-x64.tar.gz -C /export/server/
    echo "解压jdk完成"
    echo "开始添加jdk环境变量"
    ipath="/export/server/"
    sed -i '$a\JAVA_HOME=/export/server/jdk1.8.0_171\n\CLASSPATH=.:$JAVA_HOME/lib\n\PATH=$JAVA_HOME/bin:$PATH\n\export JAVA_HOME CLASSPATH PATH' /etc/profile
    echo "开始分发jdk"
    for ((i=2; i<=index; i++))
    do
        scp -r /export/server/jdk1.8.0_171 root@yixiao0${i}:/export/server/
        scp -r /etc/profile root@yixiao0${i}:/etc/
    done
    for ((i=1; i<=index; i++))
    do
        ssh yixiao0${i} "source /etc/profile"
    done
    echo "==================jdk全部安装成功=============="
}
install_jdk
阅读 3.5k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题