Scr*_*tch 59 bash auto-completion
我正在尝试对 Ubuntu 11.04 Beta 1 中的命令使用 Tab 补全,运行所有最新更新,但它似乎不起作用。(虽然安装了 bash-completion 包)
选项卡完成仅适用于目录或文件。
任何想法在哪里挖掘?
Ada*_*tek 73
检查您的 .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
Run Code Online (Sandbox Code Playgroud)
小智 14
我想我还会为 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]}
Run Code Online (Sandbox Code Playgroud)
但是,命令仍将成功完成。
2)shopt -s nullglob启用后,尝试按 Tab 键完成目录或文件将导致列出所有内容,但没有完成:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
Run Code Online (Sandbox Code Playgroud)
我已经缩短了这里的列表,因为它很长而且没有必要全部复制。
同样,命令完成仍然有效。
因此,假设您已安装并安装了适当的行,只需删除shopt -s failglob或shopt -s nullglob也可以解决 bash 完成错误的问题。.bashrcbash-completion
小智 11
除了修改/etc/bash.bashrc文件(其他答案)之外,您可能还需要安装bash-completionpackage.json 。
检查/etc/bash_completion文件是否存在。如果不:
sudo apt-get install bash-completion
Run Code Online (Sandbox Code Playgroud)
(在我对 Debian 7 的安装中,它最初没有安装)
小智 8
尽管听起来很基本,但请确保 bash 是您的活动 shell
echo $SHELL
Run Code Online (Sandbox Code Playgroud)
我刚刚升级到 Ubuntu 14.04.1 LTS 并且没有选项卡自动完成功能,即使在遵循了这篇文章的建议之后,才意识到我的 shell 被设置为 ,/bin/sh而不是/bin/bash。
| 归档时间: |
|
| 查看次数: |
104090 次 |
| 最近记录: |