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-AWK命令
    SpringInAction第五章总结 使用配置属性
    SpringInAction 第四章笔记 保护Spring
    SpringInAction第三章笔记 --使用数据
    SpringInAction第二章笔记
    SpringInAction第一章笔记
    SpringBoot启动任务
  • 原文地址:https://www.cnblogs.com/wangzhanhua/p/11157969.html
Copyright © 2011-2022 走看看