環境毎にプロンプトの色を変える


「「入れ替わってる〜〜!?!?」」

とならないために、開発環境、ステージング環境、本番環境のシェルはひと目で判別できるようにしておきたいですね。

bashzsh でプロンプト色を変更してみましょう。

bash編

RHEL系のデフォルトプロンプト

[\u@\h \W]\$

白いですね。
bashでは PS1 という環境変数を変更する事でプロンプトの変更が可能です。

文字色を変える

\e[36m

で色付けを開始して

\e[m

でリセットしています。

36 が水色、 33 が黄、 35 が紫に対応しています。
開発環境は水色、ステージングは黄、本番環境は紫、などの設定ができますね。

文字を太字にする

\e[1m

1 だと文字を太字にする事ができます。

太字で色も変える

\e[1;36m

136 の両方を設定して太字フォントかつ文字色が変更になります。

さらに色々変える

1 太字で
2 薄色で
3 イタリックで
4 下線を引き
9 取り消し線を入れ
36 文字色を水色に
45 背景色を紫に
できたりします。

仕組み

ANSIエスケープシーケンスという特殊文字を使ってターミナルでの表示を制御しています。プロンプトに限らず、プログラムの出力にも使われます。
文字スタイルや、実際の表示色はクライアントのOSやターミナルによって微妙に異なってきます。

参考
ANSIエスケープシーケンス チートシート
https://qiita.com/PruneMazui/items/8a023347772620025ad6

文字スタイル指定の一覧
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters

色指定の一覧と各ターミナルでの表示色例
https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

zsh編

zsh では PROMPT 環境変数で設定します。
設定方法もbashとは異なり、zsh独自のタグのようなものを使います。
%B太字
%b で太字解除
%F{cyan} で文字色を水色にし
%f で文字色リセット

参考
プロンプト拡張
http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Prompt-Expansion
表示効果
http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
文字装飾
http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

マシン全体に設定

/etc/profile.d/

bashなら

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

zshなら

export PROMPT="%B%F{cyan}[%n@%m]%f%b%~%# "

のようなシェルスクリプトを入れておくと、全てのユーザのデフォルトプロンプトにできます。