当对任何使用内置_longopt
完成功能的命令(例如mkdir
)使用自动完成功能时,除了所需的建议之外,shell 还始终建议当前目录的内容。
例如,如果我输入
mkdir ~/somedir
然后按 Tab 键两次 Bash 建议:(假设类型当前目录包含applications
、desktop
等)
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(也许还有其他系统)上发布。