为什么在连接时我的〜/ .bashrc来源而不是我只执行命令时?

时间:2013-07-05 13:21:21

标签: bash ssh aix

我有一个目标AIX 6.1服务器,我需要执行脚本。

目标服务器上的~/.bashrc配置为添加变量MACHINE=1

当我ssh服务器并连接时,我有效地查看了我的环境中的~/.bashrc变量:

[user@source ~]$ ssh user@10.10.10.10
[user@target]
$env |grep "MACHINE"
MACHINE=1
[user@target]
$

但是当我在ssh中直接执行env命令时,未设置变量:

[user@source ~]$ ssh user@10.10.10.10 "env" |grep MACHINE
[user@source ~]$

在服务器上有更多配置吗?

2 个答案:

答案 0 :(得分:2)

ssh远程命令执行发生在非交互式shell中。因此,您的${HOME}/.bashrc/etc/bashrc未被阅读。

如果您希望ssh命令读取环境变量,请将其添加到/etc/profile

或者,尝试黑客攻击:

ssh user@10.10.10.10 'source ${HOME}/.bashrc; echo ${MACHINE}'

答案 1 :(得分:2)

您有一个选择是告诉sshd为您设置环境变量。在/etc/sshd_config

PermitUserEnvironment yes

~/.ssh/environment

MACHINE=1