Ubuntu VPS 上 sudo 的 Bash 补全问题

Ubuntu VPS 上 sudo 的 Bash 补全问题

我有一台 Linode 的 VPS。我部署了 Ubuntu 10.04 服务器。我添加了一个用户并将其放入 sudoers 文件中。当我以用户身份写入时

apti <TAB>

它用 tab 来完成

aptitude <TAB>

但当我继续

aptitude upd <TAB>

它没有完成,但在我的桌面上运行良好。如果我用 sudo 尝试相同的命令,情况会更糟

sudo apti <TAB>

不起作用我检查了 .basrc、.profile/.bashrc 和 /etc/bash.basrc 文件,它们都没有被注释掉,所以出了什么问题。顺便说一下,当我以 root 身份使用时,它可以正常工作

我的 ~/bashrc

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

答案1

当我拿到我的 Linode (Jaunty) 时,我必须安装bash-completion。试一试。

答案2

你的 中应该有类似这样的内容~/.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 ]; then
    . /etc/bash_completion
fi

你所说的“它们都被注释掉了”是什么意思?可能是你需要的东西被注释掉了,这导致了你的问题。

答案3

您可能还想将“complete -cf sudo”行添加到您的 ~/.bashrc 文件中。这将允许 bash 在 sudo 之后搜索命令,而不是在当前目录中搜索文件。我也对许多其他命令(例如 man 和 which)执行了同样的操作。

答案4

检查你没有注释掉这些行

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

一次在您的~/.bashrc文件中(可能没问题),一次在/root/.bashrc由于未知原因被注释掉的文件中。

相关内容