web-dev-qa-db-ja.com

Ubuntu 16でターミナルタイトルを台無しにせずにgnomeターミナルでbashプロンプトを変更するにはどうすればよいですか?

すべての長いディレクトリパスが端末のスペースを使いたくないので、pythonスクリプトを使用してそれらを切り捨てます。 .bashrcファイルを編集し、PS1を

export Prompt_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.

そして、その端末のタイトルが機能しなくなった。単にTerminalを表示しますが、これはいらいらしています。 bashで次のコマンドを実行して、タイトルを手動で変更できます。

Prompt_COMMAND='echo -ne "\033]0;CUSTOM TITLE\007"'

私のbashで設定されているカスタムプロンプトに端末のタイトルを設定する方法はありますか?.

2
Vinay Tiwary

Gnome-terminalの場合、端末のタイトルはPrompt_COMMANDで定義されている/etc/profile.d/vte-2.91.shを介して設定されます。

このスクリプトで定義されているPrompt_COMMANDは、次の2つのことを行います。

  • oSC 0エスケープシーケンス(\033]0;NEW_TITLE\007)を使用して端末タイトルを変更します。

  • oSC 7エスケープシーケンス(\033]7;NEW_CURRENT_DIRECTORY\007、これは__vte_osc7関数に分解されます)を使用して、現在のディレクトリの端末の概念を変更します。

Prompt_COMMANDから2番目のものを削除すると、新しく開いたターミナルウィンドウまたはタブは、以前のターミナルで立っていたディレクトリで開かなくなります。ほとんどの場合、これは必要ありません。

そのため、シェルの起動スクリプトでは、vte-2.91.shを取得した後、Prompt_COMMANDと同様の方法でタイトルを設定し、現在の作業ディレクトリを正確に設定するvte-2.91.shを作成する必要がありますデフォルトで行われます。

PS1またはその他の場所(色の変更などのエスケープシーケンスをフィルターで除外することはできません)内でPrompt_COMMANDの解決された値を参照する方法を認識していません)。プロンプトとウィンドウタイトルに同じ文字列を表示したい場合、PS1Prompt_COMMANDの文字列の構成を複製する必要があると思います。

1
egmont

これはあなたのために働くでしょう

~/.bashrcを開きます。次の行を見つけます。

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

この行をコメントアウトします。その前に#文字を追加します。

# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

次に、この行を追加します(コメント化された行の直後に配置することもできます)。

Prompt_COMMAND='echo -ne "\033]0;Custom Name\007"'

Custom Nameを、ターミナルのタイトルを変更したいものに置き換えます。

お役に立てれば。

0
Sinscary

使用するエスケープシーケンスはESC] 2; new titleBELwhereESCBELはエスケープ文字とベル文字です。 \[\e]2;NEWTITLE\a\]が好きです。 #Bashエスケープシーケンスを使用して、プロンプトのタイトルを変更すると次のようになります。

export PS1='\[\e]2;new title\a\]Prompt > 'doc ref

したがって、カスタムの端末タイトルもあるマルチカラーの切り捨てられたbashプロンプトの例は次のとおりです。

export PS1='\[\e]2;$PWD\a\]\e[93m$USER\e[97m@\e[90m$HOSTNAME \e[93m$ \e[0m'

この例では、端末のタイトルは常に現在の作業ディレクトリ($PWD)を反映し、端末のプロンプトは、現在のディレクトリに関係なく常に次のようになります:user@hostname $

$PWDCUSTOM TITLEに置き換えると、端末タイトルに常にCUSTOM TITLEを反映させることができます。

Update
\[および\]で非印刷文字をラップしないように注意してください。それなしで動作し、私は何年も彼らなしでそれをやってきた。しかし、いくつかのセットアップで今日わかったように、ターミナルでは いくつかの問題を引き起こす可能性があります です。以下は、変数を使用してカラーコードをラッピングするよりクリーンなバージョンです。

T_YELLOW='\[\e[93m\]'
T_WHITE='\[\e[97m\]'
T_GRAY='\[\e[90m\]'
T_DEFAULT='\[\e[0m\]'
T_TITLE='\[\e]2;$PWD\a\]'
export PS1="${T_TITLE}${T_YELLOW}$USER${T_WHITE}@${T_GRAY}$HOSTNAME${T_YELLOW} $ ${T_DEFAULT}"
0
jtlindsey