通过SSH执行远程主机的命令或脚本时,会出现找不到自定义环境变量的问题。但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的。两种相似的方法,得到的结果却截然不同,这种现象,根本原因在于这两种方式使用的bash模式不同。
一、先登录再执行,运行的是interactive + login shell模式,Shell首先会加载/etc/profile文件
二、通过SSH直接执行远程命令和脚本会使用Bash的non-interactive + non-login shell模式,profile中的环境变量此时不生效,可以在用户的HOME目录添加环境变量,目录位置如: /home/uesrs/.bashrc
**解决方案:**可以在登录用户的HOME目录的.bashrc中添加需要的环境变量。