GNU Script実行中のbashプロンプトを変更する

bashrcの設定bashのプロンプトを変更する方法を書いた。
GNU Scriptでログをとっているターミナルは表面上見た目が変わらないため、複数の端末を開いているとどれがGNU Scriptでログを採っているかわからなくなることがある。また、GNU Scriptは制御文字もそのまま記録に採るため、lessやlvで見ると色着きのプロンプトが綺麗に表示されないという問題もある。(ただしmoreで見ると色付きで表示される)
そこでGNU Scriptの下で動いているbashのプロンプトを変更することにした。


ホームディレクトリにある.bashrcを以下の様に変更する。

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
# User specific aliases and functions
#PS1="\[\e[32m\][\w]\n\\$\[\e[0m\] "

if [ -w / ] ; then
        PS1='\[\e[1;31m\][\w]#\[\e[0m\] '
        PATH=$HOME/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr
/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
else
        PS1='\[\e[32m\][\w]$\[\e[0m\] '
        PATH=$HOME/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local
/sbin:/sbin:/usr/sbin
fi
# ここから今回追加
if ps -p $PPID |fgrep -q script ; then
        PS1='[\w]\$ '
fi

追加した部分では、「ps -p $PPID」を調べて「script」の文字列があれば環境変数PS1を変更している。いつでも非日本語環境でログを採りたいなら「LANC=C」を追加するのも良いかもしれない。実際の出力は以下の様になる。


[~]$ []script[]
[]スクリプトを開始しました、ファイルは typescript です[]
[][~]$ exit[]
[]exit[]
[]スクリプトを終了しました、ファイルは typescript です[]


2008/12/13追記
less -r でmoreと同じように制御文字を生のままで表示させることができる。lvについてはわからない。