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中的环境变量一致即可!




  • 相关阅读:
    Proj THUDBFuzz Paper Reading: PMFuzz: Test Case Generation for Persistent Memory Programs
    入围 WF 后训练记
    算法竞赛历程
    2021 多校 杭电 第十场
    2021 多校 杭电 第九场
    2021 多校 牛客 第十场
    2021 多校 牛客 第九场
    2021 多校 杭电 第八场
    2021 多校 杭电 第六场
    2021 多校 杭电 第七场
  • 原文地址:https://www.cnblogs.com/wangzhanhua/p/11157969.html
Copyright © 2011-2022 走看看