自动补全始终建议当前目录中的文件

自动补全始终建议当前目录中的文件

当对任何使用内置_longopt完成功能的命令(例如mkdir)使用自动完成功能时,除了所需的建议之外,shell 还始终建议当前目录的内容。

例如,如果我输入

mkdir ~/somedir

然后按 Tab 键两次 Bash 建议:(假设类型当前目录包含applicationsdesktop等)

applications/   desktop/     documents/
...
somedir_a/      somedir_b/

如何恢复正常行为并使 bash 仅建议而不建议somedir_a其他somedir_b文件/目录?

Bash 版本:GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)
Bash 补全:2.8

答案1

此行为可能是由 shell 选项引起的nullglob,例如,该选项可能在您的.bashrc.

原因是该_longopt函数的定义存在错误,导致此行为_longopt打开。

解决方案是禁用此选项或自行重写该_longopt函数。

这里也描述了类似的效果:为什么 nullglob 会影响制表符补全?,尽管这个问题很难找到,除非你知道这个选项有问题。

编辑:正如所指出的@fra-桑, 这是一个已知问题bash-completion。该修复已在 版本中发布2.9,但该版本尚未在 Fedora(也许还有其他系统)上发布。

相关内容