ssh远程连接服务器无法获取环境变量($PATH、$JAVA_HOME等)

本文记录了在使用SSH进行远程服务器部署时遇到的$JAVA_HOME环境变量未被识别的问题,详细描述了从发现问题、排查原因到最终解决的全过程。通过在脚本中加入加载配置文件的命令,成功解决了远程登录后环境变量丢失的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近写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'

         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值