问题描述
我正在尝试使用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完成的一个问题是有用的,因为据推测这是’general’规范的问题,这是所有副本被推荐。
即使您的.bashrc
(如上面的答案中所示)和安装的bash-completion
软件包中有相应的行,如果.bashrc
或.bash_aliases
中有shopt -s nullglob
或shopt -s failglob
,bash完成仍可能出现故障。
在.bashrc
和.bash_aliases
的所有用户定制被删除后,测试了以下场景,以进行公平测试,在.bashrc
中安装了适当的bash完成线并安装了bash-completion
。
1)第一种情况是您的.bashrc
或.bash_aliases
中有shopt -s failglob
。
尝试分别选中完整的目录和文件时,会发生以下错误:
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 failglob
或shopt -s nullglob
也可以解决bash完成错误的问题,假设您在.bashrc
和bash-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并且没有选项卡auto-completion,即使遵循了这篇文章的建议,也只是为了实现我的shell设置为/bin/sh
而不是/bin/bash
。