Bash 选项卡完成功能在 = 字符之后不起作用

Bash 选项卡完成功能在 = 字符之后不起作用

我查看了很多 bash 选项卡补全问题,但尚未找到可以回答这个问题的答案。

我使用的是 Linux 系统(GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)),通常制表符补全工作得很好。

但是,当我对环境变量或命令行选项使用制表符补全时,它会失败。例如,

ls /v<TAB>-> ls /var/
export FOO=/v<TAB>-> export FOO=/v(铃声响起)

当我在 Mac(GNU bash,版本 5.0.16(1)-release (x86_64-apple-darwin18.7.0))上执行此操作时,环境变量值的选项卡补全工作正常。

在两台机器上,$COMP_WORDBREAKS都是"'><=;|&(:.

有人(我不知道这是从哪里来的)建议

shopt -u progcomp

可能会有所帮助,并且确实可以解决问题!但是,我不需要在 Mac 端取消该选项,而且我担心它可能会导致其他奇怪的副作用。

取消设置是正常现象吗?我还能做些什么来解决这个问题吗?

答案1

shopt -u progcomp禁用可编程完成,即可以提供例如每个程序完成的脚本。它们可能提供诸如仅完成匹配的文件之类的功能,*.tar或者当命令行以 开头时等tar。这些脚本通常随您的发行版一起提供,对于 Mac,也可能不提供。

progcomp如果这些脚本引起的错误和错误功能看起来比实际功能有用(对我来说,大约 100% 的情况下)更烦人,那么禁用它也是可以的。

相关内容