PS1プロンプトがローカルコンソールとリモートコンソールで異なるように表示されます。

PS1プロンプトがローカルコンソールとリモートコンソールで異なるように表示されます。

私のPS1のヒントは次のとおりです。

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

これは次のことを示します。リモートで完璧(SSH)コンソール(PTS):

luis@Chomsky:~$

表示できませんが、プロンプト全体が紫色で表示されます。
問題は次のとおりです。ローカル(TTY)、少し醜さを示しています。

;luis@Chomsky: ~luis@Chomsky:~$

やはり表示できませんが、最初の部分(「;」から「〜」まで)は色がなく、残りの部分は紫です。

Additional data:  
  • Bashシェルの使用:

luis@Chomsky:~$ ps -p$$ -ocmd= -bash

  • Ubuntu DesktopおよびUbuntu Server v14.04 LTSでテストされました。
  • ポータブルASUS EEE PCとVirtualBox仮想マシンで(少なくとも)テストされています。
  • 私はexport PS1=行を追加するために使用します~/.bashrc

なぜこれが起こるのか、どうすればいいのか知りたいです。この問題を解決する

ありがとうございます。

ベストアンサー1

制御シーケンスは\e]0;TITLE\a多くの端末エミュレータで認識され、ウィンドウのタイトルを設定します。 Linuxコンソールはこの制御シーケンスを認識しません(とにかくタイトルはありません)。これを見て\e]0「これがどういう意味なのかわからないので無視します」と決めて、次のテキストを印刷します。

現在の端末によってプロンプトを異なる設定にする必要があります。

title_text='\u@\h: \w'
set_title=
case $TERM in
  dtterm|rxvt|[Ek]term|*xterm) set_title='\[\e]0;'"$title_text"'\a\]';;
  screen) set_title='\[\ek'"$title_text"'\e\\\]';;
esac
PS1="$set_title$PS1"

おすすめ記事