解決SSH登錄用戶執行的命令部分環境變量參數不生效的問題


問題概況

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腳本初始化環境變量。

參考資料很好的說明了這個問題,就不搬磚了。

參考:Why does an SSH remote command get fewer environment variables then when run manually?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM