IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    tmux下显示ssh目标host的问题

    hongjiang发表于 2015-08-14 13:26:36
    love 0

    当在tmux下ssh到远程机器时,希望显示远程host,google后找到了一段对ssh封装过的函数:

    ssh() {
        if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then
            tmux rename-window "$*"
            command ssh "$@"
            tmux set-window-option automatic-rename "on" 1>/dev/null
        else
            command ssh "$@"
        fi
    }
    

    这段函数在我的mac上运行效果正常,如下图

    但当我在一台linux上运行时,ctrl-d退出远程ssh时,会一直卡在退出状态,不管ctrl-c或什么操作也无法回到原bash,如下图

    此时只通过tmux的kill-window的操作方式来关掉这个窗口,而在mac下是没有这个问题的,分析了一下,发现在我的mac上,tmux被oh-my-zsh给alias成了一个_zsh_tmux_plugin_run函数:

    ➜  which ssh
    ssh () {
        if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]
        then
            _zsh_tmux_plugin_run rename-window "$*"
            command ssh "$@"
            _zsh_tmux_plugin_run set-window-option automatic-rename "on" 1>/dev/null
        else
            command ssh "$@"
        fi
    }
    

    在_zsh_tmux_plugin_run又做了一些环境变量的判断和处理,猜测可能是因为这些环境变量的差异所导致,先去掉tmux set-window-option automatic-rename "on" 这句最后对标准输出的重定向,看看输出什么信息,结果在修改之后却可以正常了:

    还不太清楚为何这个重定向导致了ssh退出后没法回到原shell下,先记录下这个现象。



沪ICP备19023445号-2号
友情链接