• jenkins 执行远程脚本问题


    ssh在远程连接服务器执行命令的时候,经常会遇到环境变量的问题,如下:

    /data/resin-pro-4.0.49/bin/resin.sh: line 44: exec: java: not found

    如果出现上面的提示,则说明环境变量配置有问题。
    先来说解决办法

    解决

    • 目标服务器上/etc/profile文件,拷贝文件中的环境变量,例如JAVA_HOME, PATH等等
    • 将环境变量拷贝至~/.bashrc文件保存

    source ~/.bashrc

    问题解决!

    原因及拓展

    这里就要说明bash有两种方式interactive + login shell模式和non-interactive + non-login shell模式
    在服务器上执行命令,走的是interactive + login shell模式,而通过远程登录执行命令,走的是non-interactive + non-login shell模式。
    这两种模式对于环境变量的读取是有区别的。

    • interactive + login shell模式

    Shell首先会加载/etc/profile文件,然后再尝试依次去加载下列三个配置文件之一,一旦找到其中一个便不再接着寻找:
    ~/.bash_profile
    ~/.bash_login
    ~/.profile

    • non-interactive + non-login shell模式
      它不会去执行/etc/profile文件,而会去用户的HOME目录检查.bashrc并加载

    所以当远程执行命令时,我们只需要让~/.bashrc文件中的环境变量与/etc/profile中的环境变量一致即可!




  • 相关阅读:
    静态INCLUDE与动态INCLUDE的区别
    SQL注入
    SpringMVC
    设计模式—七大原则
    Demo小细节-2
    Java运算符
    Java内部类的基本解析
    接口类和抽象类
    Statement和PreparedStatement
    ArrayList,LinkedLIst,HashMap
  • 原文地址:https://www.cnblogs.com/wangzhanhua/p/11157969.html
Copyright © 2020-2023  润新知