如何动态添加 bash 选项卡补全?

How can I add bash tab completion dynamically?

我有一个类似于 git 的程序,因为 git foogit-foo 都是调用它的有效方法。我有为 git foo 版本编写的基本制表符补全,我想将它用于 git-*。但是由于各种原因,事先知道所有 git-* 命令的列表是非常重要的(事实上,这是不可能的,因为我可以随时添加新命令),所以我需要一种方法来 运行像

complete -F _my_git_completion git-*

但是该行不起作用,因为在调用当前目录中的文件时会扩展 git-*。这没有用,因为我的文件不在当前目录中。

我依稀记得有一个钩子叫第一次尝试完成一个新的可执行文件,但我现在找不到了。有这种事吗?

好吧,原来还有这个老问题: bash-completion - completion function defined the first time a command is invoked 所以我应该更努力地搜索。