我知道-t
ssh 中的选项分配伪 tty。我用-t
它来在登录时“跳转”到不同的目录,如下所示:
ssh -t my-server "cd /path/to/my/directory; bash --login"
。
为什么如果我登录时没有它(正常情况下)/etc/motd
会打印,而有-t
它却不会打印?我知道我cat /etc/motd
以前可以cd
,但我想知道是否有更干净的解决方案,以及为什么会发生这种情况。
ps:正如您所想象的,即使我使用,我也希望在登录时打印 MOTD -t
。
答案1
MOTD 通常由 显示login
,而不是 显示bash
,因此如果您不运行,login
就不会获得 MOTD。 sshd
可能甚至不会使用login
,但会根据其几个标志的设置进行打印motd
。(正如 Jakuje 所指出的)您通过 sshd 连接的方式不会触发 motd 行为。
我怀疑,试图让事情按你想要的方式运行,将会改变你的配置文件,以便在 sshd 启动 bash 时执行 MOTD。我想你可以检查是否$tty
已定义,但可能仍然会有一些游戏阻止你在实际登录时获得两个 MOTD。
这确实看起来是付出了很多努力却收获很少。
或者,如果你喜欢
ssh -t my-server "cd /path/to/my/directory; cat /etc/motd; bash --login"