曾几何时,对host1
类似的ssh 调用ssh u@host1 command
会在执行之前读取 .bashrc command
。host2
由同一群人管理,并且读取 .bashrc!
我没有管理host1
或host2
,但在过去 6 个月的某个时候,这种行为似乎发生了变化。
现在看来不登录时正在读取 rc 文件:我进行了编辑.profile, .bash_profile, .bashrc, .login
,以便在读取时将其名称附加到变量中(export READ=$READ:.profile
)
结果让我很惊讶:
> ssh u@host1
bash3.2> echo $READ
:.bash_profile:.profile
正如我所料。
> ssh u@host1 echo \$READ
>
所以现在我陷入困境。有什么建议可以解释为什么会发生这种情况吗?这是 SSHd 设置问题吗?
仅供参考:host2
正在运行比 更旧的 OpenSSH 版本host1
,并且两者都运行相同的 bash 版本。host1
运行 AIX,host2
运行 linux。
编辑:我无法更改ssh
命令行,因为这里的目标是让git
一些非超级用户能够正常工作,因为git
(出于其他原因)安装在非标准路径上。与这个问题的关系是,由于git-unpack
在中指定了的位置.bashrc
,git clone
因此从这个远程停止工作。因此需要修复 RC 问题,因为我正在尝试为非超级用户设置它,所以这git-clone -u
不是一个令人满意的答案。
答案1
在这个特定的例子中,答案似乎(不幸的是)是有缺陷的软件(或者与链接的错误非常相似的错误)。
如果您控制该机器上的 bash,您可能能够通过重新编译 bash 来修复它#define SSH_SOURCE_BASHRC
;但是对我来说情况并非如此,所以我只能寻找其他选择。
希望这能对某人有所帮助。