問題概況
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 指令碼初始化環境變數。
即
參考資料很好的說明了這個問題,就不搬磚了。