我从这个问题开始:
唯一的区别是,在我的例子中,有问题的命令是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 实例或使用 清除即可complete -r configure
。
sudo rm /usr/share/bash-completion/completions/configure