Linuxのターミナルで表示されるコマンドプロンプト(例:user@host:~/path$)の色を変更するには、PS1環境変数をANSIエスケープシーケンスで修飾します。この設定は通常~/.bashrcファイルに記述され、シェル起動時に読み込まれます。
1. PS1の構成と色指定の基本
PS1はプロンプトのフォーマット文字列であり、以下の要素を含めることができます:
\u:現在のユーザー名\h:ホスト名(ドメインなし)\w:カレントディレクトリの絶対パス(例:/home/user/project)\W:カレントディレクトリのbasename(例:project)\$:一般ユーザーは$、rootは#
各要素の色は\[\033[属性;色コードm\]で囲み、終了は\[\033[0m\]でリセットします。\[と\]は非表示文字であることをシェルに通知し、カーソル位置計算の誤りを防ぎます。
2. 実用的なカラーテーマ例
以下は、.bashrcに直接追加可能な4つの異なるテーマです。すべてsource ~/.bashrcで即時反映されます。
テーマA:モダンブルー(青系)
PS1='\[\033[0;36m\]\u\[\033[0;37m\]@\[\033[0;34m\]\h\[\033[00m\]:\[\033[1;34m\]\w\[\033[00m\]\$ '
テーマB:ハイコントラストグリーン
PS1='\[\033[1;32m\]\u\[\033[1;37m\]@\[\033[1;36m\]\h\[\033[00m\]:\[\033[1;34m\]\w\[\033[00m\]\$ '
テーマC:パステルパープル
PS1='${debian_chroot:+($debian_chroot)}\[\033[0;35m\]\u\[\033[1;37m\]@\[\033[0;36m\]\h\[\033[00m\]\[\033[0;33m\]:\w\[\033[00m\]\[\033[1;37m\]$ \[\033[00m\]'
テーマD:ライトモード(白地に明るい文字)
PS1='\[\033[0;95m\]\u\[\033[0;97m\]@\[\033[0;94m\]\h\[\033[00m\]:\[\033[0;92m\]\w\[\033[00m\]\$ '
3. 色コード一覧(前景色)
| コード | 色 | 備考 |
|---|---|---|
0;30 | 黒 | 暗め |
0;31 | 赤 | |
0;32 | 緑 | |
0;33 | 黄 | |
0;34 | 青 | |
0;35 | マゼンタ | |
0;36 | シアン | |
0;37 | ライトグレー | |
1;31 | 明るい赤 | 太字相当 |
1;37 | 白 | |
0;97 | 純白 | 高輝度 |
背景色は40〜47(標準)、100〜107(高輝度)で指定可能です。例:\033[44m=青背景。
4. 設定の永続化とロード順序
多くの端末エミュレータ(MobaXterm、GNOME Terminalなど)は「ログインシェル」ではなく「インタラクティブ非ログインシェル」を起動するため、.bash_profileではなく.bashrcが自動読み込みされません。これを解消するには、~/.bash_profileに以下を追加します:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
また、.bashrc内では必ずdircolorsやls --color=autoの設定を含めておくと、ファイル一覧表示もカラフルになります:
if command -v dircolors >/dev/null 2>&1; then
[[ -f ~/.dircolors ]] && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
fi
5. カラー設定の検証とデバッグ
設定後にプロンプトが正しく表示されない場合は、次の手順で確認してください:
echo $PS1で現在の値を出力set -xでシェルの実行トレースを有効化- 不正なエスケープ文字がないか
cat -A ~/.bashrcで確認 resetコマンドで端末状態を初期化
さらに高度なカスタマイズが必要な場合、zshへの移行やoh-my-zshなどのフレームワーク利用も検討できます。