解决SSH登录用户执行的命令部分环境变量参数不生效的问题

Posted czd890

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决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?

以上是关于解决SSH登录用户执行的命令部分环境变量参数不生效的问题的主要内容,如果未能解决你的问题,请参考以下文章

ssh远程连接服务器执行命令

Linux下如何使环境变量文件生效

为啥环境变量写入到/etc/profile里面了,也source了,怎么就是不生效

Linux ssh 免密登录设置成功,却不生效

linux_无秘登录问题(不生效)

linux子用户修改环境变量,切换到root环境用户变量不生效