Bash自动补全在Root用户下无法正常工作。

我使用的是12.04版本,正在尝试找到一种方法来启用root用户的Bash自动补全功能。
有什么想法吗?

可能重复问题?http://askubuntu.com/questions/33440/tab-completion-doesnt-work-for-commands - lumbric
你是在尝试输入什么时,你的Bash补全功能不起作用?还是根本就无法使用? - harisibrahimkv
在尝试在ROOT中输入时,它无法正常工作。但在普通用户中,它可以正常运行。例如:root# apt-get install gua[tab][tab]。它应该显示类似Guake的内容,但实际上没有显示出来。对于其他命令也是如此,在使用普通用户时,它显示的是相同的内容,而在该命令之前加上"sudo"后却能正常显示。 - T0M XeOn LuCiFeR
@lumbric :不,那不是我的答案... ;) - T0M XeOn LuCiFeR
1@T0MXeOnLuCiFeR,你能添加sudo cat /root/.bashrc的输出吗? - lumbric
4@T0MXeOnLuCiFeR 你介意不要写“像这个短语吗?”,这样会让阅读变得更困难,而且使用起来毫无意义。 - Bruno Pereira
@lumbric 这是输出结果 [我知道它不是用C语言编写的,所以……]:http://codepad.org/cP1h0Ae4 - T0M XeOn LuCiFeR
@T0MXeOnLuCiFeR 嗯... 终于这是一个重复的建议问题,但可能有些微妙 :) 我添加了详细的说明作为答案。 - lumbric
在我的情况下(Void Linux),root用户使用/bin/sh,一旦我调用bash,自动补全就开始工作了。 - SergioAraujo
2个回答

Bash自动补全可以在.bashrc文件中启用,如此问答所述。在您的情况下,您的用户的.bashrc文件似乎是正确的,但是您的root用户的.bashrc文件不正确。后者位于/root/.bashrc。以root身份使用您喜欢的文本编辑器打开此文件(例如通过运行sudo gedit /root/.bashrc),并删除最后三行开头的#符号:
您需要将第98-100行更改为
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

...到:

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

然后关闭你的终端,重新打开它们。

谢谢,我仍然有问题,我的意思是子命令,比如当你输入了apt-get现在你要输入“install”时,你只输入了前三个单词然后按tab,在普通用户中可以运行,在root用户中不能。我现在该怎么做...? - T0M XeOn LuCiFeR
我按照你告诉我的做了,但是还是不起作用,你有其他的想法吗? - T0M XeOn LuCiFeR
@T0MXeOnLuCiFeR 我非常确定这是你问题的源头。你有没有再次使用cat命令来查看文件是否按照我建议的进行了更改?你有没有关闭并重新打开所有终端?如果没有,请尝试手动运行. /etc/bash_completion(注意前面有一个.!)。 - lumbric
是的,我做到了...不管怎样,情况有所改善,但并非我所预期的那样...我会进一步查看详细信息。谢谢。 - T0M XeOn LuCiFeR
@T0MXeOnLuCiFeR 你尝试手动运行 . /etc/bash_completion 吗? - lumbric

我通过编辑“etc”文件夹中的“bash.bash.rc”文件,在Ubuntu 12.04 LTS中成功启用了“bash completion”。
我只是在第32-34行中移除了“#”,现在“sudo”的bash completion正常工作。