单独测试jps命令和先ssh登录再测试jps命令都是可行的。
这说明配置的 /etc/profile文件中的环境变量是有效的,
对ssh远程执行命令这种方式是无效的,profile文件没有调用到。
于是通过技术文章了解ssh远程执行命令的原理。
https://feihu.me/blog/2014/env-problem-when-ssh-executing-command-on-remote/
ssh 远程执行命令采用bash的non-interactive + non-login shell模式。这种模式下,bash没有登录启动,然后创建一个shell,执行完脚本或命令就退出,不与用户交互。它不会调用/etc/profile文件,而是会去调用用户的home目录下的.bashrc文件,即~/.bashrc。从两个文件开头也可以看出
于是解决思路就是在~/.bashrc文件中加入对应的环境变量:
在~/.bashrc文件中# Source global definitions这段话前面加入环境变量。(注意是在# Source global definitions前面
)
再执行命令source ~/.bashrc激活文件