当我运行
时ssh user1@server1 'ssh user2@server2'
我可以登录,但是我的RC文件不会加载。即使当我source .zshrc
时,我仍然有空白的提示,没有颜色。我什至尝试过exec zsh
和exec bash
作为后备,但没有任何改变。这里发生了什么,我该如何修复?
避免问题
首先不要这样做。而是使用SSH的内置ProxyJump
支持:
ssh -o 'ProxyJump user1@server1' user2@server2
您甚至可以通过在~/.ssh/config
文件中放置类似以下内容来使其与server2
的所有连接进行自动化:
Host server2
ProxyJump user1@server1
解释问题
有几种行为:
- 当
ssh
传递一个命令时,它不会默认创建TTY(除非传递给-t
或-tt
(。这会影响任何被调用程序操纵终端设置的能力;isatty(0)
也是执行" AM-I Interactive?"的常规方式?查看。如果外壳的stdin未连接到TTY,这是决定它不是交互式的一种方式。 - 当
"$SHELL" -c "command"
启动外壳时 - 就像ssh
传递命令运行时所做的那样 - 它不会在交互式模式下运行,因此不会强制rc
文件(明确用于交互式使用(。<<<<<<<<<</li>