web-dev-qa-db-ja.com

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

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

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

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

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

4回。

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

yesterday

明らかに、ディレクトリを変更するとタイトルが変わるはずです。プロンプトを変更せずにこれを実行したいので、プロンプトと端末のタイトルは異なるはずです。

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

10
Staring Frog

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と戦います(最良の方法)。

11
Steven K

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

3
LikeTheRock