×

【麒麟排障】命令补全失效?四步教你让Tab键重新“活过来”!

hqy hqy 发表于2025-11-15 02:52:29 浏览7 评论0

抢沙发发表评论

01

环境确认

»


首先查看系统版本和内核信息,确定系统环境后,我们进入正式排查。




pdsyw@pdsyw1024:~/桌面$ cat /etc/os-releasepdsyw@pdsyw1024:~/桌面$ uname -a
图片




02

问题一:系统缺少 bash_completion

»


1

用户无法补全命令


打开终端后提示“bash: /usr/share/bash-completion/bash_completion: 没有那个文件或目录”,并且普通用户无法补全命令。

原因分析:ifconfig、apt、systemctl 等命令的智能补全功能依赖bash-completion包。如果在系统更新或清理时被误删,就会出现此类问题。


图片



2

root用户也无法补全命令


图片



3

查看软件状态


如果显示如下图中的rc bash-completion,说明包被卸载了但是有残留。




root@pdsyw1024:~# dpkg -l |grep bash-completionrc  bash-completion                               1:2.10-1kylin1                            all          programmable completion for the bash shell
图片



4

重装bash-completion



root@pdsyw1024:~# apt install bash-completion
图片



5

命令补全功能恢复


按Tab,就可以正常自动补全了。


图片




03

问题二:用户.bashrc文件被注释

»


1

普通用户无法补全命令


打开终端没有任何提示,但是普通用户无法补全命令。


图片



2

root用户可以补全命令


图片



3

查看普通用户的.bashrc文件


查看普通用户的.bashrc文件中bash-completion相关内容是否被注释,如果被注释,则取消注释。



pdsyw@pdsyw1024:~/桌面$ vim ~/.bashrc
图片
图片



4

普通命令补全功能恢复


图片




04

问题三:缺少系统环境变量脚本

»


1

普通用户补全命令正常


图片



2

root用户无法补全命令


图片



3

查看bash_completion.sh文件


原因分析:系统的/etc/profile.d/bash_completion.sh文件丢失,root登录时未能加载相应变量。查看/etc/profile.d/bash_completion.sh文件是否存在,如果不存在则需要重新添加。




root@pdsyw1024:~# ll /etc/profile.d/bash_completion.shls: 无法访问'/etc/profile.d/bash_completion.sh': 没有那个文件或目录
图片



4

拷贝bash_completion.sh文件


在相同的电脑中拷贝一份bash_completion.sh文件到/etc/profile.d/下,保证文件权限正常。





pdsyw@pdsyw1024:~/桌面$ sudo cp bash_completion.sh /etc/profile.d/pdsyw@pdsyw1024:~/桌面$ ll /etc/profile.d/bash_completion.sh-rw-r--r-- 1 root root 729 11月 13 17:32 /etc/profile.d/bash_completion.sh
图片



5

加载变量


重新加载一下bash_completion相关的环境变量。



pdsyw@pdsyw1024:~/桌面$ source /etc/profile.d/bash_completion.sh
图片



6

root用户补全命令正常


重新打开一个终端窗口,然后进入root用户下测试命令补全正常。


图片




05

问题四:使用“su”未加载环境变量

»


1

root用户命令无法补全


通过在普通用户的终端,输入“su”进入root用户后,root命令无法补全。





pdsyw@pdsyw1024:~/桌面$ su输入密码root@pdsyw1024:/home/pdsyw/桌面# apt up
图片



2

root用户命令可以补全


通过在普通用户的终端,输入“su -”进入root用户后,root命令可以补全。






pdsyw@pdsyw1024:~/桌面$ su -输入密码root@pdsyw1024:~# apt upupdate   upgrade
图片



3

su和su -区别





su:不加载/etc/profile,可能不会执行/etc/profile.d/bash_completion.sh。su -:模拟完整登录,会自动加载 /etc/profile 和 /etc/profile.d/*。所以切 root 时建议习惯用:su -


打赏

本文链接:https://www.kinber.cn/post/5930.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客