Bashが復活を完了します。

Bashが復活を完了します。

私はこの質問から始めます。

Bash は特定のコマンドに対してオートコンプリートを無効にします。

唯一の違いは、私の場合は問題の命令だったことですconfigure。その質問に記載されている解決策が正常に適用されました(つまり、完了を削除する必要がありますcomplete -r configure)。問題は…一度完成しようとすると再び生き返るということです。

$ complete -p configure 
complete -F _configure configure       # Hum... there *is* a completion

$ complete -r configure                # So let's remove it!

$ complete -p configure 
bash: complete: configure: no completion specification   # Ha! It's gone!

                                       # Let's try it now.
$ ./configure <TAB>                    # Damn! It still doesn't work!

$ complete -p configure                # It's back from the dead!!!
complete -F _configure configure

この問題を解決する方法を知っている人はいますか?

編集する:
もう一つの情報:

complete -p configureこれを私のエントリに追加しましたが、.bashrc起動時に次のエラーが発生し始めました。

bash: complete: configure: no completion specification

興味深いです。起動時に完了は存在しませんconfigure...一種のようです動的完成の定義はここで起こります。

答え1

はい、スクリプトはconfigure動的にロードされます。

実行されたすべてのコマンドを印刷するオプションを設定することでこれを確認できますset -x。そしてTABオートコンプリートを試してみてください。

ソースの手がかりはこのコマンドの出力です。

dpkg -L bash-completion | xargs egrep '\<_configure\>' 2>/dev/null

ファイルを削除しconfigureてbashインスタンスを再起動するか、cleanを使用してくださいcomplete -r configure

sudo rm /usr/share/bash-completion/completions/configure

関連情報