解决Linux下sudo输入命令不能自动补全的问题(附详细步骤)

2023-12-26 12阅读
无法使用Tab键进行命令自动补全。则无法再次使用Tab键进行命令自动补全。我们需要手动修改配置文件来打开bash shell 的自动完成功能。

作为一名使用Linux系统的用户,你可能会遇到这样一个问题:在使用sudo su切换用户时,无法使用Tab键进行命令自动补全。这个问题看似小,却影响了我们在终端中的效率和体验。那么该如何解决呢?本文将为大家提供详细步骤。

第一需要明确的是,在普通用户状态下,我们可以使用Tab键进行命令自动补全;但当我们通过sudo su切换到root用户后,则无法再次使用Tab键进行命令自动补全。

那么出现这种情况是因为什么原因呢?

解决Linux下sudo输入命令不能自动补全的问题(附详细步骤)

其实很简单,就是因为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输入命令不能自动补全的方法,相信大家能够轻松解决这一问题。在日常使用中,我们要注意细节,及时发现和解决问题才能更好地提高工作效率。

文章版权声明:除非注明,否则均为游侠云资讯原创文章,转载或复制请以超链接形式并注明出处。

目录[+]