我的系统是基于Arch Linux的Manjaro Linux,我使用bash和bash-completion
。
当我输入常规用户(无sudo
)
$ rfkill <TAB><TAB>
block event help list unblock
但是当我用sudo输入
时$ sudo rfkill <TAB><TAB>
Display all 3811 possibilities? (y or n)
显然,它会尝试完成sudo
命令,但我希望它能完成rfkill
。
我知道我可以通过编辑/usr/share/bash-completion/completions/sudo
文件来改变这种行为,但我不知道如何说如果第二个单词不是sudo的标志,那么使用完成来表示下一个单词。
UPD:我在虚拟机中测试Ubuntu 16.04
,我看到它按预期工作。我将检查ubuntu的/usr/share/bash-completion/completions/sudo
文件与我的文件之间的区别,如果有的话。
UPD2 :这些文件之间存在一些镜像(无意义)差异,无论如何都没有帮助。我有更多的想法来测试...
答案 0 :(得分:1)
我遇到了完全相同的问题(运行Manjaro),并在Manjaro论坛(Source)中找到了解决方案:
bash-completion
是否存在来确保实际上已安装/usr/share/bash-completion/bash_completion
。如果没有使用pacman -S bash-completion
~/.bashrc
文件中的complete -cf sudo
已被注释掉。否则,这将使sudo
仅自动完成文件名和命令,而不会使用bash-completion。我希望这可以帮助您解决问题
答案 1 :(得分:0)
使用双标签:
sudo rfkill <TAB><TAB>
<强> UPD 强>
如果没有该行,请将其添加到您的.bashrc
complete -cf sudo