键入“第一个命令”时 Bash 可编程完成

Sta*_*ček 6 bash command bash-completion

有没有办法控制在 bash4 命令提示符下键入的第一个命令的完成?

我可以使用完整的 -E 来控制“空行”的补全,但是一旦输入了一些字符,bash(或可能是 readline)就会给我来自 PATH、内置命令(if、then、else...)和函数的所有文件名完成尝试 (TAB)。

我能够通过在 PROMPT_COMMAND 中取消设置 PATH 并通过将函数绑定到陷阱 DEBUG 来恢复它来避免 PATH 条目,但是没有摆脱 bash bultin 命令完成的运气。

有任何想法吗?

xiz*_*ian -3

bash 补全存储在 /etc/bash_completion.d/ 中。如果您具有 root 访问权限,那么您可以在那里编辑/删除文件。

如果您想在用户级别控制事物,那么您可以创建并编辑 ~/.inputrc。查看 /etc/inputrc,它会让您知道从哪里开始。

~/.inputrc 会覆盖 /etc/inputrc 中的任何内容,因此您可以更改 bash_completion 查找完成文件的位置。您可以创建一个本地完成目录,并只在其中包含您想要完成的项目。我相信你也可以消除 bash 内置函数。

网上还有一些关于 bash 补全的非常好的教程。 这儿 这儿