くりにっき

フルスタックキュアエンジニアです

bash_completionで「-bash: __git_ps1: command not found」となった時の対処法

brew upgradeでgitをversion 1.7.12にしたら

-bash: __git_ps1: command not found

となるエラーが出てちょっとハマったのでメモ。

※ちなみに MacのターミナルでGitのブランチ名を表示する - アインシュタインの電話番号☎ を元にgitコマンドのタブ補完や色つけをしていました

調べてみたらgit-completion.bashで__git_ps1が見つからなくてエラーになってた模様。


解決策としては

source /usr/local/etc/bash_completion.d/git-prompt.sh
source /usr/local/etc/bash_completion.d/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

のように、git-completion.bashの前にgit-prompt.shを読みこませればOKでした

元エントリではgit-completion.bashを手動でコピーしていたようですが、homebrewでgitを入れているなら自動的にエイリアスが貼られるので不要です。*1

$ ls -l /usr/local/etc/bash_completion.d/
total 16
lrwxr-xr-x  1 sue445  admin  65  8 30 00:16 git-completion.bash -> ../../Cellar/git/1.7.12/etc/bash_completion.d/git-completion.bash
lrwxr-xr-x  1 sue445  admin  59  8 30 00:16 git-prompt.sh -> ../../Cellar/git/1.7.12/etc/bash_completion.d/git-prompt.sh

*1:今回のようにupgradeで勝手に動かなくなるので諸刃の剣ですが・・・