PS1 を plain にする際
PS1="\e]0;${SHELL##*/}\a$ "のようにして、Xterm Control Sequences でタイトルバーに "bash" と表示させると共に、プロンプトはシンプルに "$ " ようにしてたんだけど、history をたどると、
$ ls | cat | cat | cat ...
$ ls ...
$ ■[↑]
$ ls■[↓]
$ ■[↑]
$ ls■[↑]
$ ls | cat | cat | cat■[↓]
$ ls | cat | ■[↑]
$ ls | cat | | cat | cat | cat■[↓]
$ ls | cat | ■[↓]
$ ls | cat ■[↑]
$ ls | cat ls■[↑]
$ ls | cat ls | cat | cat | cat■みたいになって、参照した history 9 文字分消えなくなる。
bash の manpage で PROMPTING のところ引くと
どうも "\[" と "\]" で囲った部分は非表示扱いされてカーソル位置の計算にカウントされないようだ。
従って、以下のようにするのが正解だったらしい。
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the promptって説明があって、
\] end a sequence of non-printing characters
どうも "\[" と "\]" で囲った部分は非表示扱いされてカーソル位置の計算にカウントされないようだ。
従って、以下のようにするのが正解だったらしい。
PS1="\[\e]0;${SHELL##*/}\a\]$ "
タグ
コメントをかく