我目前运行的是 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 文件中拥有所有权限的用户加载该函数。