bashでGNU Screen/tmuxを用いた場合です。
OSXとDebian系で確認しています。
RedHat系はパス名をbasenameで短くすると良いでしょう。
Table of Contents
1 GNU Screenで画面下部にウィンドウ一覧を表示する
tmuxはデフォルトで画面下部にウィンドウ一覧が表示されますが、GNU Screenは${HOME}/.screenrcの設定が必要です。
hardstatus on hardstatus alwayslastline "screen | %w"
hardstatus alwayslastlineで画面下部にウィンドウ名の一覧を表示します。
%wにはPROMPT_COMMAND変数の実行結果が設定されます。
以下はDebian 8でのGNU Screenの実行結果です。
2 PROMPT_COMMAND変数
プロンプトの文字列を生成するコマンドを保持する変数です。以下はRedHat系での実行結果です。
$ echo ${PROMPT_COMMAND} printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
RedHat系はPS1との兼ね合いができていますがOSXとDebian系はできてません。GNU Screenを起動していない状態だと以下のようになってしまいました。
hiroom2@lenovo:hiroom2hiroom2@lenovo:~$
このままだと${HOME}以降のパスがすべて表示されて長くなるので、basenameコマンドを使うと良いかもしれません。
printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" `basename "${PWD/#$HOME/~}"`
3 .bashrcでTERM判定とPROMPT_COMMAND変数を設定
TERM変数がscreenとかscreen.xterm-256colorの場合はPROMPT_COMMAND変数を設定するようにします。
case "${TERM}" in screen*) export PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" `basename "${PWD/#$HOME/~}"`' ;; esac
以下はDebian 8でのGNU Screenの実行結果です。
Ubuntu 14.04だとウィンドウ名が長すぎると省略されるのでユーザ名はなくても良いかもしれません。