apt-get 自动补全

Den*_*nuz 10 bash apt autocomplete not-root-user

我目前正在运行 64 位 Debian Wheezy。

我在自动完成 apt-get 时遇到了一些麻烦。我已经安装了 bash-completion。

如果我在 shell 中以 root 身份登录,我可以对 apt-get 使用自动完成(例如:apt-get install wicd[tab][tab ]),它会显示所有匹配的包。但是,如果我尝试在另一个非 root 用户(即使使用 sudo)中为 apt-get 使用自动完成功能,它根本无法工作。我可以自动完成其他事情,比如文件名。

有什么帮助吗?

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

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Run Code Online (Sandbox Code Playgroud)

n61*_*007 7

您的/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
Run Code Online (Sandbox Code Playgroud)

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

包变更信息


D4R*_*RIO 0

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

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