3

現在実行中のプロセス名を GNOME ターミナルのタブ タイトル (またはタブが 1 つしかない場合はタイトル バー) に表示するにはどうすればよいですか?

https://superuser.com/questions/42362/gnome-terminal-process-name-in-tab-titleは解決策 (以下) を提供しますが、開始時に各タブがゴミで完全に乱雑になり、壊れているように見えます。より良い方法はありますか?

case "$TERM" in
xterm*|rxvt*)
    set -o functrace
    trap 'echo -ne "\e]0;$BASH_COMMAND\007"' DEBUG
    PS1="\e]0;\s\007$PS1"
    ;;
*)
    ;;
esac
4

1 に答える 1

5

まあ、誰もがすでに David Pashley のソリューションを知っているように見えるので、これを見つけるのに非常に長い時間がかかったことに少し驚いています。実際には、bash の完了の問題を処理します。

明確にするために:私はここで自分で何もしませんでしたが、研究しました。すべての功績は Marius Gedminas ( http://mg.pov.lt/blog/bash-prompt.html ) にあります。

これは、Gnome-Terminal/Terminator で完全に機能します

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

    # Show the currently running command in the terminal title:
    # http://www.davidpashley.com/articles/xterm-titles-with-bash.html
    show_command_in_title_bar()
    {
        case "$BASH_COMMAND" in
            *\033]0*)
                # The command is trying to set the title bar as well;
                # this is most likely the execution of $PROMPT_COMMAND.
                # In any case nested escapes confuse the terminal, so don't
                # output them.
                ;;
            *)
                echo -ne "\033]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}\007"
                ;;
        esac
    }
    trap show_command_in_title_bar DEBUG
    ;;
*)
    ;;
esac
于 2012-11-15T14:03:46.150 に答える