RVMまたはそのようなツールを使用していると思います。
現在の git (2.1.3) 以前のバージョンに同梱されている git-completion.bash にはバグがあり、RVM が使用されているディレクトリでファイル補完を一覧表示するときに無限ループが発生します。
この無限ループの原因は、chpwd_functions
RVM およびその他のツールによって行われた の変更です。
ファイルの一覧表示に使用されるメソッドのみに影響する git-comletion.bashのパッチを見つけました。__git_ls_files_helper
パッチは を無視するchpwd_functions
ため、これらの無限ループは省略されます。
要するに:__git_ls_files_helper
関数は次から変更する必要があります:
__git_ls_files_helper ()
{
(
test -n "${CDPATH+set}" && unset CDPATH
cd "$1"
if [ "$2" == "--committable" ]; then
git diff-index --name-only --relative HEAD
else
# NOTE: $2 is not quoted in order to support multiple options
git ls-files --exclude-standard $2
fi
) 2>/dev/null
}
に:
__git_ls_files_helper ()
{
(
test -n "${CDPATH+set}" && unset CDPATH
(( ${+functions[chpwd]} )) && unfunction chpwd
(( ${#chpwd_functions} )) && chpwd_functions=()
setopt chaselinks
builtin cd "$1" 2>/dev/null
if [ "$2" == "--committable" ]; then
git diff-index --name-only --relative HEAD
else
# NOTE: $2 is not quoted in order to support multiple options
git ls-files --exclude-standard $2
fi
) 2>/dev/null
}
詳細については、Github の RVM の問題に関するディスカッションを参照してください。git-completion.bash の場所は、git のインストール方法によって異なります。Homebrewを使用する場合、場所は次のようなものです
/usr/local/Cellar/git/<git version>/etc/bash_completion.d/
他のシステムで、または他のパッケージマネージャーを使用している場合、通常は次のようになります
/opt/local/etc/bash_completion.d
git-completion.bash の詳細については、git-scm.com ブックの 2.7 章にある Git のヒントとコツを参照してください。
アップデート:
Git v 2.2.0 ではこの問題が修正されているため、この問題が発生している場合はアップグレードしてください。