出现的原因:

一般,/etc/skel目录下的最重要的文件是以下标注部分,出现问题中的情况,主要是这两个隐藏文件丢失导致。

[root@congzhongzhi ~]# ls -la /etc/skel/

total 20

drwxr-xr-x. 2 root root 4096 Jul 13 17:27 .

drwxr-xr-x. 78 root root 4096 Aug 10 14:44..

-rw-r--r--. 1 root root   18 Mar 23 08:15.bash_logout

-rw-r--r--. 1 root root  176 Mar 23 08:15 .bash_profile

-rw-r--r--. 1 root root  124 Mar 23 08:15 .bashrc

解决办法:

在出现问题的用户下,输入cp /etc/skel/.bash*  ~,此用户再重新登录即可。

 

  • 线下模拟:

问题生成操作:

[root@congzhongzhi~]# tail -5 /etc/passwd

oldboy:x:500:500::/home/oldboy:/bin/bash

oldgirl:x:501:500::/home/oldgirl:/bin/bash

test:x:502:502::/home/test:/bin/bash

alex888:x:888:0::/home/alex888:/sbin/nologin

mysql:x:889:889::/home/mysql:/sbin/nologin

 

[root@congzhongzhi~]# su - test

[test@congzhongzhi~]$\rm -f .bash*            #删除和用户有关的环境变量的配置文件

[test@congzhongzhi ~]$ logout                #重新登录该用户

[root@congzhongzhi ~]# su - test

-bash-4.1$                                      #出现了问题

解决措施:

在出现问题处输入

-bash-4.1$ cp /etc/skel/.bash* ~

-bash-4.1$ logout                       #退出,重新登录

[root@congzhongzhi ~]# su - test        #再次切换用户

[test@congzhongzhi ~]$              #OK,问题已解决

有的用户可能会出现这样的问题:

[oldboy@congzhongzhi ~]$ \rm -f .bash*

rm: cannot remove `.bash_logout': Permission denied         #权限受限

rm: cannot remove `.bash_profile': Permission denied

rm: cannot remove `.bashrc': Permission denied

我们的做法是:

先查看该用户的家目录路径

[oldboy@congzhongzhi ~]$ pwd

/home/oldboy

切到root用户下,执行下面的命令

    [root@congzhongzhi~]# chown oldboy /home/oldboy

再切到Oldboy用户下,就可以进行操作了。

解决方案总结:

1、切换到有故障的用户

2、故障原因:用户环境变量有关的文件~.bashrc   ~.bahs_profile已丢失

3、/etc/skel里面存放着文件的模板

4、/etc/skel/.bash*   复制到当前用户(cp ./etc/skel/.bash*  ~

5、重新登录该用户