【发布时间】:2015-08-14 08:55:28
【问题描述】:
在我的 Ubuntu 14.04.3 机器上启用了 bash 补全(通过 ~/.bashrc 中的 . /etc/bash_completion),我没有得到 cmd --param=<TAB> 的目录内容补全,也就是说,按下 .当我开始一个原始的 bash(例如通过env -i bash --norc)时,它按预期工作——但是没有可编程的完成可用。我发现 Bash completion for path in argument (with equals sign present) 谈到了类似的问题,但是 1)我的机器上不存在相应的 npm 脚本,并且 2)即使从 /etc/bash_completion.d 中删除所有文件也不能解决问题。我该怎么做才能正确完成?
我通过运行complete -r -D 找到了一个三心二意的修复程序,它阻止了 bash 尝试完成新命令。这会在 equals 之后再次启用完成,但会停止完成,例如 killall。
【问题讨论】:
-
$COMP_WORDBREAKS是否包含=?如果没有,请尝试COMP_WORDBREAKS+==并查看完成是否符合您的预期。 -
$COMP_WORDBREAKS 的内容是
"'><=;|&(:。删除或添加=似乎不会改变行为 wrt。不幸的是,在=之后完成。 -
运行
complete -p cmd并查看是否为您的 cmd 定义了 compspec。 -
不,没有定义特定的 compspec,它不能正确完成任何命令(上次我使用
ljkasdfjler --asdlk=<TAB>;))
标签: bash ubuntu bash-completion