[shell] プロンプトに Git のブランチ名をカラーで表示したい

シェルのプロンプトに git リポジトリのブランチ名 (やその他の情報) を表示したいときには git-prompt.sh を使います。(git-prompt.sh の導入方法・使い方についてはここでは省略します。)

このときブランチ名をカラーで表示するには GIT_PS1_SHOWCOLORHINTS という変数を利用するのですが、この変数の使い方について日本語の情報が意外と少ないようなのでメモしておきます。

GIT_PS1_SHOWCOLORHINTS

git-prompt.sh の中身 を見ると以下のようなことが書いてあります。

If you would like a colored hint about the current dirty state, set GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on the colored output of “git status -sb” and are available only when using __git_ps1 for PROMPT_COMMAND or precmd.

というわけで、次の2つをやってあげればいいようです。

  1. GIT_PS1_SHOWCOLORHINTS に何かの値を入れて、
  2. __git_ps1PROMPT_COMMAND の中で使う。

また、「 available only when using __git_ps1 for PROMPT_COMMAND or precmd. 」とあるように __git_ps1PROMPT_COMMAND 環境変数の中で使わなければなりません (注1)。

この git-prompt.sh の冒頭には、__git_ps1PS1 環境変数の中で使う旨が書いてあるのですが、GIT_PS1_SHOWCOLORHINTS を使う場合は PROMPT_COMMAND を使う必要があるので注意しましょう (注1)。

注1・・・ bash の場合です。zsh の場合は precmd です。詳しくは git-prompt.sh を見てください。

というわけで、.bashrc やら .bash_profile やらには以下のように書きました。

GIT_PS1_SHOWCOLORHINTS=true
PROMPT_COMMAND="__git_ps1 '\u@\h \w' ' \\\$ '"

サンプル

参考の画像です。ブランチ名 (ここでは master) に色がついているのがわかります。

git-ps1-showcolorhints-sample
GIT_PS1_SHOWCOLORHINTS サンプル

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です