equals之后的Bash完成在Ubuntu上不起作用

时间:2015-08-14 08:55:29

标签: bash ubuntu bash-completion

在启用了bash完成的Ubuntu 14.04.3计算机上(通过〜/ .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尝试完成新命令。这样可以在再次等于之后完成,但停止完成,例如,对于killall。

1 个答案:

答案 0 :(得分:0)

虽然我不明白你的意思&#34;在killall&#34;之后停止完成,我相信有一个解决方法。

我发现它here。它涉及覆盖破碎的bash完成功能。复制粘贴在这里记录。解决方法是将以下内容添加到您的.bashrc

_completion_loader () {
  local dir=/usr/share/bash-completion/completions
  local cmd="${1##*/}"
  . "${dir}/${cmd}" &>/dev/null && return 124
  complete -o default -o bashdefault "${cmd}" &>/dev/null && return 124
}

我不确定实际报告的bug是否在bash中得到修复:错误报告中的注释不清楚,并提到了一些问题。为了记录,我的bash版本是4.2.46(1)-release(Redhat EL 7)确实有这个bug。