最近写sh部署脚本,发现ssh远程登录服务器之后命令无法获取$JAVA_HOME。我使用mvn打包,报错如下:
which: no java in (/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
我的排错步骤如下:
我全部使用root登录,登录上之后echo也能打出所有的环境变量,权限也都ok,/etc/profile都检查过,也source过没有问题,甚至尝试dockerfile加ENV重新配置环境变量,-v挂载环境地址都没有用(后来证明想错了,还没执行到docker部署那一步)。将sh命令单独放在服务器执行也没有问题,才逐步确定ssh远程登录没有获取到环境变量。
通过查询,在脚本中加入一小段即可。让shell加载配置文件。
ssh root@123.123.123.123 '. /etc/profile;bash -s' <<'ENDSSH'