选项卡完成不适用于命令
我正在尝试使用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
软件包,如果你的.bashrc
有shopt -s nullglob
或shopt -s failglob
,bash完成仍然会出错.bash_aliases
。
测试了以下方案,并删除了.bashrc
和.bash_aliases
所有用户自定义以进行公平测试,并在.bashrc
存在相应的bash完成行并安装了bash-completion
。
1)第一种情况是你的.bashrc
或.bash_aliases
有shopt -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 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并且没有选项卡自动完成,即使按照这篇文章的建议,只是意识到我的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