普段はzshを使っているのだが、先日 ローカルのbashrcを利用してssh接続する方法 を知ったので、bashrcについても多少手を入れてみることにした。 で、zshでは右プロンプトにタイムスタンプを表示させたりしているのだが、今回はこれをbashでやる方法についてを残しておく。

zshでは右プロンプトは「RPROMPT」という設定項目で右プロンプトを指定できるのだけど、残念ながらbashにはそういったものは存在していない。 なので、PS1よりも先に実行されて、多少いろいろと自由がきく PROMPT_COMMAND にfunctionを指定することで、擬似的に右プロンプトを出力させることにする。 以下、設定例。

# PS1
export PS1="\u@\h [\w]\\$ "

# PROMPT_COMMANDで指定するfunction
function __command_rprompt() {
    # 右プロンプトに表示させる内容。今回はタイムスタンプ。
    local rprompt=$(date "+%Y/%m/%d %H:%M:%S")

    # 右プロンプトを表示するために必要となる幅
    local num=$(($COLUMNS - ${#rprompt} - 2))

    # 右プロンプトの表示(\\rがないとうまく動作しないので注意)
    printf "%${num}s$rprompt\\r" ''
}

PROMPT_COMMAND=__command_rprompt

残念ながらPS1と同じような指定方法だとカラーコードを認識してくれないので、色をつけたい場合にはちょっと手間が必要になる(printfで呼び出す際に記述する)ので、zshと同じ感覚で設定はできない。 とはいえ、上のような形でbashrcを設定してあげれば、一応はbashでも右プロンプトを利用できる。