Bash プロンプト色変更

本番環境だと気付かずに事故を起こしてしまったあのときの自分へ。

前提となる要素

Bash 設定ファイル

Bash の設定対象は .bashrc.bash_profile です。 どちらに設定しても最終的に読み込まれれば問題はありませんが、念のため仕様を調べてみます。

Man や他のサイトの解説を読むと、以下のような使い分けをするようです。

  • ~/.bashrc
    • シェル起動時に実行される
    • エイリアスなど一般的な設定を記載
  • ~/.bash_profile
    • ログイン時に実行される
    • 環境変数などを記載
    • 中で .bashrc を読み込む

上記を踏まえ、今回は .bashrc に設定を書き込みます。

プロンプト変数

PS1 はデフォルトでホスト名やカレントディレクトリが表示される変数です。
また、PS2 はコマンドが複数行に渡った場合の2行目以降の > を表します。

設定変更

色一覧

セミコロン左側の数字は文字をボールドにするかどうかのフラグで、右側の31~37は文字の色を示しています。記載はしていませんが41~47にすると背景色の変更ができます。
また、太字にすると同じ色コードでも明るく表示されます。

Black       0;30     Dark Gray     1;30
Red         0;31     Light Red     1;31
Green       0;32     Light Green   1;32
Brown       0;33     Yellow        1;33
Blue        0;34     Light Blue    1;34
Purple      0;35     Light Purple  1;35
Cyan        0;36     Light Cyan    1;36
Light Gray  0;37     White         1;37

設定例

~/.bashrc の末尾に以下のような行を追記します。

プロンプトまでを赤文字にする場合

export PS1="\[\e[0;31m\][\u@\h \W]\\$ \[\e[m\]"
export PS2="\[\e[0;31m\]> \[\e[m\]"

(表示例)

[root@localhost ~]# echo Hello \
> World

ホスト名だけを赤い太字にする場合

export PS1="[\u@\[\e[1;31m\]\h\[\e[m\] \W]\\$ "

(表示例)

[root@localhost ~]# echo Hello \
> World

設定の読み込み

最後に設定ファイルを読み込みます。一度ログアウトして再度ログインをしても同じ結果が得られます。

# source ~/.bashrc

今回は事故を起こさないための色変更が目的なため、特殊文字のそれぞれの意味については参考サイトを参照ください。

参考サイト