Answers:
检查.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-completion
是必需的。奇怪的是,我公司的标准安装没有此软件包。
我想我还会为bash完成失败添加以下补充说明-注释太长,可能对bash完成有问题的人有用,因为大概这是“通用”规范问题所有副本均被引用。
即使你有适当的线的.bashrc
(如上面的答案)和bash-completion
已安装的软件包,bash补尚可,如果您有任何故障shopt -s nullglob
或shopt -s failglob
您.bashrc
或.bash_aliases
。
在以下情况下,使用所有用户自定义项进行了测试,.bashrc
并.bash_aliases
删除了这些场景,以进行公平的测试,.bashrc
并使用当前和bash-completion
安装的适当的bash完成线。
1)第一种情况是,当你有shopt -s failglob
你的.bashrc
或.bash_aliases
。
当尝试分别使用Tab键完成目录和文件时,将发生以下错误:
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
安装。
更新到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
执行重击