apt-get 自动补全

apt-get 自动补全

我目前运行的是 64 位 Debian Wheezy。

我在 apt-get 的自动完成方面遇到一些问题。我安装了 bash-completion。

如果我在 shell 中以 root 身份登录,我可以使用 apt-get 自动完成功能(例如:apt-get install wicd[tab][tab]])它会向我显示所有与之匹配的软件包。但是,如果我尝试在另一个非 root 用户中使用 apt-get 自动完成(即使使用 sudo),它将根本不起作用。我可以自动完成其他内容,例如文件名。

有什么帮助吗?

我的 .bashrc 和 /etc/profile 中有以下代码

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi

答案1

您的/etc/bash_completion文件一定丢失了。

sudo apt-get install bash-completion

应该可以解决你所有的问题。

鉴于您已经有一些未注释的行,/etc/bash.bashrc正如 Faheem Mitha 和其他人指出的那样,它现在应该可以工作:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

原因:bash-completion包现在有该文件(/etc/bash_completion)。它曾经在bash包装中,但现在不再了。

包装变更信息

答案2

我不记得这是否有必要,但请尝试取消注释相应的行(/etc/bash.bashrc如果尚未取消注释),即

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

答案3

尝试运行这个:

chsh -s /bin/bash $USER

答案4

我记得,命令参数的 bash 自动完成是通过complete命令完成的。您应该有一个由 root 用户 bashrc(可能是 /root/.bashrc)加载的 apt-get 完成脚本,因此您需要 root 登录才能运行它。 Sudo 不会加载 root 登录脚本,它只是为您提供权限。

也许您缺少非 root 用户的自动完成脚本,因此他们没有为 apt-get 配置 bash 自动完成功能。如果是这样,请为 sudoers 文件中拥有所有权限的用户加载该函数。

相关内容