私はこの質問から始めます。
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