选项卡完成不适用于命令

我正在尝试使用Ubuntu 11.04 Beta 1中的命令的tab completion,运行所有最新的更新,但它似乎不起作用。 (虽然安装了包bash-completion)

选项卡完成仅适用于目录或文件。

任何想法在哪里挖?

检查.bashrc中是否有以下片段(默认情况下应该在那里)

# enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi 

我认为我还会为bash完成失败添加以下附加说明 – 评论太长,对于有bash完成问题的人可能会有用,因为这可能是“一般”规范问题。所有重复都被引用。

即使你的.bashrc有相应的行(如上面的答案)和安装的bash-completion软件包,如果你的.bashrcshopt -s nullglobshopt -s failglob ,bash完成仍然会出错.bash_aliases

测试了以下方案,并删除了.bashrc.bash_aliases所有用户自定义以进行公平测试,并在.bashrc存在相应的bash完成行并安装了bash-completion

1)第一种情况是你的.bashrc.bash_aliasesshopt -s failglob .bash_aliases

尝试分别选中完整的目录和文件时,会发生以下错误:

 cd Dbash: no match: "${COMP_WORDS[@]}" cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]} 

但是,命令仍将成功完成。

2)启用shopt -s nullglob ,尝试选项卡完成目录或文件将导致列出的所有内容都没有完成:

 cd Do .adobe/ .gimp-2.6/ Podcasts/ .aptitude/ .gnome2/ Public/ .audacity-data/ .gnome2_private/ .pulse/ ............ 

我已经缩短了这里的列表,因为它很长,没有必要重现它。

同样,命令完成仍然有效。

所以,只是删除shopt -s failglobshopt -s nullglob也可以解决bash完成错误的问题,假设你的.bashrcbash-completion安装了适当的行。

除了修改/etc/bash.bashrc文件(其他答案)之外,您可能还需要安装bash-completion包。

检查/etc/bash_completion文件是否存在。 如果不:

 sudo apt-get install bash-completion 

(在我对Debian 7的安装中,它最初没有安装)

基本可能听起来确保bash是你的活动shell

 echo $SHELL 

我刚刚升级到Ubuntu 14.04.1 LTS并且没有选项卡自动完成,即使按照这篇文章的建议,只是意识到我的shell设置为/bin/sh而不是/bin/bash

更新到Ubuntu 14.04.01

检查.bashrc中是否有以下片段(默认情况下应该在那里)

sudo vim /etc/bash.bashrc(输入“i”来编辑文件)

  # enable bash completion in interactive shells if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi 

取消注释7行以上

保存文件“esc + w + q + enter”

重启bash

exec bash