问题概况
Linux 机器在/etc/profile 配置完成环境变数后,SSH 到目标机器执行命令,但是获取不到已配置的环境变数值。
例如场景:
在/etc/profile 配置了 http 代理
export all_proxy=http://$PROXY_HOST:8118
export ftp_proxy=http://$PROXY_HOST:8118
export http_proxy=http://$PROXY_HOST:8118
export https_proxy=http://$PROXY_HOST:8118
然后 SSH 目标机器,并通过 pm2 start app.js 启动应用程式,但是应用程式的请求走不到 http 代理程式。
解决办法
在 /etc/bashrc 档案中,把配置的那一坨也仍进去。就 OK 了。
问题原因
SSH 登入预设为非 shell 登入方式,而非 shell 登入方式执行的是 bashrc 指令码初始化环境变数。
而 shell 登入方式则是执行的是 profile 指令码初始化环境变数。

参考资料很好的说明了这个问题,就不搬砖了。