当前位置: 首页>>技术问答>>正文


选项卡完成不适用于命令

, ,

问题描述

我正在尝试使用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 nullglobshopt -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 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并且没有选项卡auto-completion,即使遵循了这篇文章的建议,也只是为了实现我的shell设置为/bin/sh而不是/bin/bash

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1848.html,未经允许,请勿转载。