每次从一台机器转到另一台机器后,如何执行命令?

时间:2008-11-14 02:37:28

标签: ssh

每次从一台机器ssh到另一台机器后,如何执行命令?

e.g

ssh mymachine
stty erase ^H

我宁愿在ssh连接完成后每次都执行“stty erase ^ H”。

此命令不能简单地进入我的.zshrc文件。即对于本地会话,我无法运行命令(它搞砸了我的键绑定)。但我需要它为我的远程会话运行。

6 个答案:

答案 0 :(得分:12)

将命令放在~/.ssh/rc

答案 1 :(得分:7)

你可以把这样的东西放到shell的启动文件中:

if [ -n "$SSH_CONNECTION" ]
then
  stty erase ^H
end

-n测试将确定是否设置SSH_CONNECTION仅在通过SSH登录时才会发生。

答案 2 :(得分:1)

如果您正在登录带有shell的* nix框,为什么不将它放在shell启动中?

.bashrc.profile在大多数情况下。

答案 3 :(得分:0)

假设有一个linux目标,请将其放在.profile

答案 4 :(得分:0)

尝试在〜/ .bashrc末尾添加命令。它应该在注销时退出。在注销ssh会话时,您是否希望执行此命令 ?那么本地会议等呢?

trap 'stty erase ^H; exit 0' 0

您可能也可以使用相同的模式从/ etc / profile设置.logout文件。

答案 5 :(得分:0)

我们的答案,屏幕/ byobu用户:

geocar的解决方案不起作用,因为屏幕会抱怨“必须连接到终端。”。 (这可能是因为在 shell启动之前已经处理了 .ssh / rc这一事实。请参阅man 8 sshd中的LOGIN PROCESS部分。

Robert的解决方案在这里更好,但是由于screen和byobu打开它自己的bash实例,我们需要避免无限递归。所以这里调整了byobu友好版本:

## RUN BYOBU IF SSH'D ##
## '''''''''''''''''' ##
# (but only if this is a login shell)

if shopt -q login_shell
then
    if [ -n "$SSH_CONNECTION" ]
    then
        byobu
        exit
    fi
fi

请注意,我在exit之后添加了byobu,因为IMO如果你首先使用byobu,你通常不想做任何事情。