每次从一台机器ssh到另一台机器后,如何执行命令?
e.g
ssh mymachine
stty erase ^H
我宁愿在ssh连接完成后每次都执行“stty erase ^ H”。
此命令不能简单地进入我的.zshrc文件。即对于本地会话,我无法运行命令(它搞砸了我的键绑定)。但我需要它为我的远程会话运行。
答案 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,你通常不想做任何事情。