从 OS X 开始,我通过 ssh 进入 foo(一个 Linux 机器)。我的终端标题变为 foo。然后我通过 ssh 进入 bar(另一个 Linux 机器)。我的终端标题变为 bar。我退出 bar。我的终端标题变为 foo。我退出 foo。我的终端标题仍然是 foo(而不是变回原来的标题)。问题显然不在于终端,因为从 Linux 机器注销回到 Linux 机器时它可以正常工作。可能不是 ssh,因为我使用 vim 时也有同样的问题。在我看来,问题出在 shell 上。我使用的是 BASH。查看环境,我没有发现 Linux 机器和我的 OS X 机器之间有什么太大的区别。两者都使用 xterm 的 TERM。
答案1
添加
export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
解决了我的.bash_profile
问题。
PROMPT_COMMAND
每次显示提示时,似乎都会执行字符串 in 。从手册页中可以看到:
PROMPT_COMMAND
如果设置,则在发出每个主提示之前,该值将作为命令执行。
答案2
我找到了更好的解决方案。OSX 使用以下系统范围的配置:
PROMPT_COMMAND="update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
函数update_terminal_cmd
在 中声明/etc/bashrc_Apple_Terminal
。因此,如果您不想通过重置 来破坏终端设置,则可以将这些行添加到或PROMPT_COMMAND
的末尾:~/.profile
~/.bashrc
my_update_terminal_cwd() {
update_terminal_cwd # call system wide function
printf '\e]0;\a' # reset additional title after SSH session
}
PROMPT_COMMAND="my_update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
例子: