我尝试在 Ubuntu 11.04 Beta 1 中使用 Tab 补全命令,并运行所有最新更新,但似乎不起作用。(尽管已安装 bash-completion 软件包)
Tab 补全仅对目录或文件有效。
知道在哪里挖掘吗?
答案1
检查你的 .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
答案2
除了修改/etc/bash.bashrc
文件(参见其他答案)之外,您可能还需要安装bash-completion
包。
检查/etc/bash_completion
文件是否存在。如果不存在:
sudo apt-get install bash-completion
(在我安装 Debian 7 时它最初没有被安装)
答案3
我认为我还应该添加以下关于 bash 完成失败的额外解释 - 它对于评论来说太长了,并且可能对那些对 bash 完成有问题的人来说很有用,因为大概这是所有重复项所涉及的“一般”规范问题。
即使你的.bashrc
(如上面的答案所示)中存在相应的行并且安装了包,如果你的或中有或bash-completion
,bash 完成仍然会出现故障。shopt -s nullglob
shopt -s failglob
.bashrc
.bash_aliases
以下场景已对所有用户自定义项进行了测试.bashrc
,为了进行公平测试,已删除所有自定义项,并已安装.bash_aliases
适当的 bash 完成行。.bashrc
bash-completion
1) 第一种情况是当您的或shopt -s failglob
中。.bashrc
.bash_aliases
当尝试分别制表完整目录和文件时,将出现以下错误:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
然而,命令仍然会成功完成。
2)shopt -s nullglob
启用后,尝试使用 Tab 键完成目录或文件将导致列出所有内容,而不会完成:
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
。
答案4
更新至 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
执行 bash