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://kinber.cn/post/5930.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
