解决Linux下sudo输入命令不能自动补全的问题(附详细步骤)
作为一名使用Linux系统的用户,你可能会遇到这样一个问题:在使用sudo su切换用户时,无法使用Tab键进行命令自动补全。这个问题看似小,却影响了我们在终端中的效率和体验。那么该如何解决呢?本文将为大家提供详细步骤。
第一需要明确的是,在普通用户状态下,我们可以使用Tab键进行命令自动补全;但当我们通过sudo su切换到root用户后,则无法再次使用Tab键进行命令自动补全。
那么出现这种情况是因为什么原因呢?
其实很简单,就是因为root用户没有开启bash shell 的自动完成功能。而普通用户则默认开启了此功能。
所以要想解决这个问题,我们需要手动修改配置文件来打开bash shell 的自动完成功能。
接下来我将分别介绍两种方法:
方法一:1. 通过vi或nano等编辑器打开/etc/bash.bashrc文件
sudo vi /etc/bash.bashrc
2. 找到以下代码:
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
3. 将代码中的if ! shopt -oq posix; then改为if [ "$PS1" ]; then,即:
if [ "$PS1" ]; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
4. 保存修改并退出。
5. 输入以下命令使配置文件生效:
source ~/.bashrc
方法二:如果你觉得上面那种方式太麻烦,可以直接使用一道命令来打开自动完成功能:
echo "complete -cf sudo" >> ~/.bashrc && source ~/.bashrc
这条命令的作用是在~/.bashrc文件末尾添加“complete –cf sudo”这一行,并且让修改后的配置文件立即生效。
好了,现在我们再次通过sudo su切换到root用户状态下,在终端输入任意指令时都能正常使用Tab键进行命令自动补全啦!不过需要注意的是,在切换回普通用户状态下时,可能还需重新输入source ~/.bashrc才能恢复原有状态。
最后总结一下:本文介绍了两种解决Linux下sudo输入命令不能自动补全的方法,相信大家能够轻松解决这一问题。在日常使用中,我们要注意细节,及时发现和解决问题才能更好地提高工作效率。