端末のタイトルをパスなしのディレクトリ名に自動的に設定する方法


11

現在、私のbashターミナル/タブのタイトルは、私がいるディレクトリに基づいて設定されています。次に例を示します。

bob@bobscomputer:~/i/had/some/great/pie/yesterday

複数のタブを並べて開いている場合、これはあまり役に立ちません。たとえば、上記のディレクトリの4つのタブが並んで開いている場合、表示されるのは

bob@bobscomputer:~/i/had...

4回。

すべてのターミナルタイトルをパスの最後の部分だけに自動的に設定したいのですが。上記の例では、タイトルを

yesterday

もちろん、ディレクトリを変更すると、タイトルも変わるはずです。プロンプトを変更せずにこれを実行したいので、プロンプトとターミナルのタイトルは異なるはずです。

これを行う方法はありますか?


ZSHについては、ここを見て:superuser.com/a/1328085/122021
LAFKが復活モニカ言う

回答:


11

PS1変数を変更せずにそれを実行したいのはなぜですか?それが正しい方法です。

以下を実行すると、必要なものが得られます。

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

これは単にデフォルトのプロンプトを取っています:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

...と交換\u@\h: \w\W

正しいエスケープコードをエコーするコマンドでも同じことができます。

echo -en "\e]0;${PWD##*/}\a"

...しかし、PS1を使用してそれを実行しないようにするために、常にbashと戦っています(最良の方法)。


2
ありがとう-PS1がタイトルとプロンプトを個別に設定することに気づかなかった。私の.bashrcでは、xterm * | rxvt *のケース "$ TERM"の下で、PS1 = "[\ e] 0; $ {debian_chroot:+($ debian_chroot)} \ W \ a] $ PS1"を設定し、それはまさに私が欲しかったことをします。
見つめるカエル

この質問は、PS1 gobbledygookのすべての意味を説明するのに役立ち
404341

3

はい。プリペンド:\[\e]0;\W\a\]PS1に。これはプロンプトの外観を変更しませんが、ターミナルタブのタイトルを現在の作業ディレクトリのベース名に自動的に設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.