SSH会话后的终端选项卡标题


11

在Mac OS X(我使用的是10.6.8,尽管我相信其他版本相同)中,将ssh'放入远程计算机会更改Terminal中当前选项卡的标题。烦人的是,当我与远程计算机断开连接(无论是exit通过超时还是通过超时)时,选项卡的标题都不会恢复为原来的状态。

在几乎每天的时间里,这几乎使我心脏病发作,当我键入执行某些命令或其他命令时,只是从眼角看到该选项卡仍然命名为user @ remotehost。我是一个谨慎的用户,pwd在执行任何操作之前总是倾向于确认自己的位置,但是当我这样做时,它仍然让我感到恐慌,DROP DATABASE x并且我在选项卡中看到了远程主机名。

长话短说,与远程主机断开连接时,是否有办法还原此标题,还是每次断开连接时都必须坚持打开新标签来重置标题?


退出时终端名称也会重置npm
Awesome_girl

Answers:


20

添加PROMPT_COMMAND到您的 .bash_profile

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOSTNAME}\007';$PROMPT_COMMAND"

PROMPT_COMMAND被执行每次提示显示时间。

请注意,我们包括了现有的PROMPT_COMMAND环境变量,因此我们不会丢失任何现有设置(即update_terminal_cwd)。


2
确保代码添加到PROMPT_COMMAND,而不是替换它,例如PROMPT_COMMAND="<your code>; $PROMPT_COMMAND";; 否则,您将禁用使用此变量的其他功能。例如,/ etc / bashrc使用它来设置终端的当前工作目录,以便终端可以显示它并将其用于各种操作。
克里斯·佩奇

@ChrisPage是否需要先添加新代码$PROMPT_COMMAND才能保留其他功能?
reve_etrange 2015年

为什么不直接将其放入PS1?
吴永伟

这是您如何编辑.bash_profilesublime $HOME/.bash_profile
Awesome_girl

@Awesome_girl确保subl已安装命令,然后使用从终端编辑文件subl ~/.bash_profile。如果此命令不存在,请遵循以下命令:sublimetext.com/docs/2/osx_command_line.html
XtraSimplicity

2

要使@ s01ipsist的解决方案与ZSH(macOS上的新外壳)一起使用,可以将其添加到~/.zshrc

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOST}\007';$PROMPT_COMMAND"
precmd() { eval "$PROMPT_COMMAND" }

1

这是您需要粘贴到.bash_profile文件中的内容。这要干净得多,并且采用苹果在更新当前工作目录时所采用的方法。检查变量update_term_title是否已经存在并不是真正必要的(因为没有人调用bash -- login),而只是作为警卫而存在。

if [ -z "$INSIDE_EMACS" ]; then
    # Update the terminal title on every prompt shown
    update_term_title() {
        # Print user@short-hostname once SSH quits.
        echo -ne "\033]0;${USER}@${HOSTNAME%%.*}\007"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "\033]0;\007" if you don't want anything.
    }
    # Check to see if update terminal title is present?
    if ! echo $PROMPT_COMMAND | grep -q update_term_title
    then
       # This function is not found in PROMPT_COMMAND, add it
       PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }update_term_title"
    fi
fi

1
大声笑,我想知道是谁写了这个答案...原来是我:-)
zapstar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.