单枞
2017-12-26 01:48
采纳率: 100%
浏览 2.6k
已采纳

关于ssh远程执行source语句的问题

向各位老司机请教一下:我在A机器上远程操作要在B机器上安装jdk并配置相关文件,脚本能正常执行并修改配置文件,但是最后一句source /etc/profile 却不起作用。在B机器上输入java,
[root@Slave1 ~]# java
-bash: java: command not found
请问要怎样处理才能使新配置文件在B机器上生效呢?
#!/bin/bash

SERVERS="192.168.91.21"
PASSWORD=123456
BASE_SERVER=192.168.91.10

for SERVER in $SERVERS
do
scp install.sh root@$SERVER:/root
ssh root@$SERVER /root/install.sh
done

#install.sh文件内容如下
#!/bin/bash

YUM_SERVER=192.168.91.10

#yum install -y wget

#安装java
wget $YUM_SERVER/soft/jdk-7u45-linux-x64.tar.gz
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk1.7.0_45
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile

#安装其它软件

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • huhuhuHR 2017-12-26 02:04
    已采纳

    参考:https://www.cnblogs.com/sky-/p/5026012.html
    真不行重启一下服务器

    已采纳该答案
    打赏 评论
  • felixchenjia 2017-12-26 01:53

    B机器的终端重新打开一次试一下

    打赏 评论
  • 裸睡的雨 2017-12-26 02:02

    我也碰到过,配置后最后重启就好了,也没执行source,也就没在搞过
    要么就是centOS版本的问题

    打赏 评论
  • mei_bing 2017-12-26 02:08

    估计是用户权限问题,你可以把jdk环境变量放到.bashrc下然后执行. .bashrc 就可以暂时使用jdk

    打赏 评论
  • chengchengwoheni 2017-12-26 02:09

    感觉你环境没有配好,没有配进去,配置文件打开检查下,路径对不对

    打赏 评论
  • twqllq98849577 2017-12-26 02:14

    我的也是不行,没有配置好

    打赏 评论
  • zxh_997234531 2017-12-26 02:18

    重启一下终端,因为source命令也称为“点命令”也就是一个符号(.).source命令通常用于重新执行刚修改的初始或文件,使之立即生效,而不必注销并重新登录,如果他执行不起效果,就重启一下

    打赏 评论
  • 单枞 2017-12-26 02:21

    我在install.sh文件最后添加了一行“java",是能有相关输出的,证明source /etc/profile这语句在A机器上的shell是生效的。B机器如果重启后,
    java命令也能正常使用,证明配置没问题的。 但如果不重启,为什么在B机器上运行[root@Slave1 ~]# java
    -bash: java: command not found?

    打赏 评论
  • hiniunk 2017-12-26 02:59

    环境没有配置好吧,配置后重启试一下。

    打赏 评论
  • Three-Autumn 2017-12-26 05:16

    巧了,我觉得要重新配置

    打赏 评论

相关推荐 更多相似问题