为什么我的 rc 文件在嵌套 ssh 调用时不加载?



当我运行

ssh user1@server1 'ssh user2@server2'

我可以登录,但是我的RC文件不会加载。即使当我source .zshrc时,我仍然有空白的提示,没有颜色。我什至尝试过exec zshexec 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>

相关内容

  • 没有找到相关文章

最新更新