ターミナルにScreenのウィンドウ番号を表示する方法

環境が変わったとき用のメモ。


基本的なBash前提で。


ターミナルの表示は以下の様な感じになっているはず。
fooはユーザ名、barはマシン名。現在位置が/にいる。

foo@bar:/$ 


これをこんな感じにする。

foo@bar:/:1$ 


まずこのターミナルのプロンプト表示はBashが管理していて、変数PS1に設定されている。

$ echo $PS1

として確認する。
出力された文字列がプロンプトのフォーマット。


自分の環境(Ubuntu)での表示。
ディストリによっても違うので注意すること。(Debianでも同じだと思う)
意味はman bash(1)を参照。

${debian_chroot:+($debian_chroot)}\u@\h:\w\$


次にScreenのウィンドウ番号はWINDOWという変数に入っている。
また、Screenを使用している状態ではTERM変数が変わる。

$ echo $WINDOW
1
$ echo $TERM
screen

ちなみにFedoraではTERMの値が"screen.linux"になっていた(はず)のでこれもディストリによって変わるみたい。


これで必要な情報が分かったので~/.bashrcに追加を行う。

if [ "$TERM" = "screen" ]; then
  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w:$WINDOW\$ '
fi

これでScreen使用時のみウィンドウ番号が表示されるようになる。