読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

Mac のターミナルのプロンプトに Git ブランチ名を表示するようカスタマイズしてみた

普段、Windows 環境では GitBash を使っているので、プロンプトにディレクトリ名と Git ブランチ名が表示されている。

一方、Mac のターミナルは、Git をインストールしても Bash 環境には何ら影響がないので、ブランチ名が分かりづらかったりしてつらい。

ということで、Mac のターミナルのプロンプト表示をカスタマイズしてみた。

プロンプトの表示仕様変更

プロンプトの表示仕様を変更するには、PS1 という環境変数を変更する。

# 例えば「(ディレクトリ名) $ (ココにコマンド)」という形式のプロンプトにする場合
export PS1='\w $ '

この設定を .bash_profile に書いてやれば、プロンプトの表示形式を変更できるというワケだ。

この表示形式変更だが、特殊記号を使うと文字色も変更できるので、設定次第で GitBash のようなカラフルなプロンプトも自分で作れるのだ。

今回は GitBash For Windows の設定を丸パクリする

GitBash での表示形式が気に入っているなら丸パクリしちゃえばいいじゃない、ということで、GitBash はどのようにプロンプトを設定しているのか確認してみた。

# 環境変数 $PS1 がどう設定されているのか確認する
$ echo $PS1
\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ 

このようになっていた。

\ を省略するが、[033[32m] などのように書かれている部分が、文字色を変更するための書き方になっている。\n は改行、\u はユーザ名、\h はホスト名、といったように、書き方が決まっている。

この辺は参考記事を見ながらカスタマイズすれば良い。

今回は Mac のターミナルにも上記の設定をほぼ丸パクリしようと思う。ただ、$MSYSTEM という変数部分が要らないので、これだけ削除しておく。

.bash_profile に書く前に確認するには、ターミナル中で以下のような形で、export はせずに実際に PS1 に代入してやることで即時反映できる (ただしターミナルを閉じると変更は保持されずに破棄される)。

# 「MINGW64」部分がないので削除した状態で試しにプロンプトを変えてみる
PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '

これで動くはず、なのだが、Mac の場合、ブランチ名を表示するために使用している git_ps1 という変数部分をデフォルトだと解釈できないと思う。どうやら Git が提供する必要なシェルスクリプトを読んでおかないといけないようだ。

そこで、.bash_profile に書き込む場合は、以下のように記載する必要がある。

# Git のプロンプトと Git 入力補完のシェルを読み込んでおく
. /usr/local/etc/bash_completion.d/git-prompt.sh
. /usr/local/etc/bash_completion.d/git-completion.bash
# プロンプトの表示仕様を決めるオプション変数
GIT_PS1_SHOWDIRTYSTATE=true
# プロンプトの表示形式を宣言
export PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '

GIT_PS1_SHOWDIRTYSTATE に関しては、以下の記事でその他のオプションも紹介している。

これで、GitBash For Windows とほぼ同じプロンプトを Mac のターミナルにも設定できたはずだ。

入門 Unix for OS X 第5版

入門 Unix for OS X 第5版