zoukankan      html  css  js  c++  java
  • 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中的环境变量一致即可!




  • 相关阅读:
    linux命令总结
    在阿里云centos7.6上部署vue.js2.6前端应用
    MongoDb语法
    Echarts 地图绘制
    在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4
    django--- 支付宝退款
    响应式网站设计(Responsive Web design)
    django -- 推荐商品算法
    django -- 美多订单分表
    小程序基本配置
  • 原文地址:https://www.cnblogs.com/wangzhanhua/p/11157969.html
Copyright © 2011-2022 走看看