* nixボックスがLDAPクライアントとして設定されている場合、ローカルユーザーとしてログインしていても、この問題が発生する可能性があります。
退屈なデバッグ情報:を使用したデバッグ:set-x
でハングしていた完了が見つかりました:
> set -x
> ls foo<tab>
... <--- lots of output removed
...
+ _quote_readline_by_ref foo quoted
+ '[' -z foo ']'
+ [[ foo == \'* ]] <--- froze here
+ [[ foo == ~* ]] <--- actually causing the trouble
確認:ls ~*
これも確認しましたが、ハングしました。私のLDAPサーバーは動作が遅いことがわかりましたが、これはbashの完了やlsなどには影響しないはずです!
解決策:ああ、bash-completion + ldapに対して提出されたバグがあります。それは新しいバージョンで修正され、待ちたくない場合は簡単なパッチです。タブの補完が再び高速になりました。
リンクがなくなった場合のパッチファイルは次のとおりです。545行目と547行目で〜をエスケープしているだけです。
--- /usr/share/bash-completion/bash_completion.orig 2014-11-06 10:36:14.981888369 +0100
+++ /usr/share/bash-completion/bash_completion 2014-11-06 10:36:25.142070963 +0100
@@ -542,9 +542,9 @@
elif [[ $1 == \'* ]]; then
# Leave out first character
printf -v $2 %s "${1:1}"
- elif [[ $1 == ~* ]]; then
+ elif [[ $1 == \~* ]]; then
# avoid escaping first ~
- printf -v $2 ~%q "${1:1}"
+ printf -v $2 \~%q "${1:1}"
else
printf -v $2 %q "$1"
fi
このパッチを有効にするには、現在のsshセッションを終了して再ログインする必要があります。