如何使Xterm窗口标题在当前运行命令和当前路径之间切换?

neu*_*242 5 osx bash prompt xterm window-title

我想设置Xterm窗口标题在两种状态之间切换:

  • 当命令运行时,显示命令名称(例如“less”)
  • 当没有命令运行时,显示当前路径(例如“src”)

我可以使用当前路径创建一个 Xterm 窗口标题:

$ export PROMPT_COMMAND='echo -ne "\033]0;`basename ${PWD}`\007"'
Run Code Online (Sandbox Code Playgroud)

我可以通过添加语句来显示当前正在运行的命令:trap.bashrc

$ trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
Run Code Online (Sandbox Code Playgroud)

但我无法在两者之间自动切换。是否可以?

编辑:@terdon展示了一个在常规 xterm 中工作的解决方案,这很酷!但我没有提到我使用 MacOSX Terminal.app。当没有命令运行时,这表明仍然显示“bash”而不是当前路径。经过一番修改,我想出了如何解决这个问题。

neu*_*242 2

我意识到MacOSX Terminal.app 不读取 .bashrc。在有关如何提取字符串第一个单词的一些帮助和一些修补的帮助下,我通过添加以下内容来调整@terdon的出色答案.bash_profile:

trap 'echo -ne "\033]0;${BASH_COMMAND%% *}\007"' DEBUG

function show_name { 
    if [[ -n "$BASH_COMMAND" ]]; then
      echo -en "\033]0;`basename ${PWD}`\007"
    fi 
}
export PROMPT_COMMAND='show_name'
Run Code Online (Sandbox Code Playgroud)

瞧!它就像一个魅力。

  • 啊,是的,我错过了 OSX 标签。由于某种原因,他们决定让所有 shell 都成为登录 shell。 (2认同)