Centos下面有多个文件可以用于加载环境变量,包括:

全局的配置文件: /etc/profile /etc/profile.d/*.sh

用于用户初始化的配置文件:/etc/skel/.*

用户home目录下的配置文件:.bashrc、.bash_profile

用户登录时环境变量的加载顺序:

1. 先读取/etc/profile, 然后根据这个文件读取其他include的配置文件,如/etc/profile.d/*.sh

2. 根据不同的登录用户读取.bash_profile

3. 根据不同的登录用户读取.bashrc

也就是说/etc/profile中的配置会被.bash_profile覆盖,.bash_profile会被.bashrc覆盖。

我比较习惯与在.bashrc中设置自己的环境变量,原因在于这个文件中的配置不会被其他配置文件中的不同配置覆盖掉,另外一个原因在于每次打开一个shell的时候.bashrc都会重新加载,而.bash_profile只会在登录的时候加载一次。这就导致了在用su命令切换用户以后.bash_profile里面的配置不会生效,当然也可用用su – 来切换用户,加-可以强制加载.bash_profle文件。

清理用户帐号并初始化环境变量:

有时候需要批量的清理用户帐号,并重新初始化,这个时候可以把用户家目录下所有文件删除,然后从/etc/skel目录下拷贝初始化的配置文件。

shell> rm –frv ~/{*,.??*} //删除home目录下所有文件

shell>cp –frv /etc/skel/.??* ~ //初始化环境变量

其中:

* 代表0或多个字符(或数字)

? 代表“一定有”1个字母,这里用了2个(?),表示点号后面至少有2个字符,可以排除(../),?可以用户匹配(.)号,如果只有1个?的话:

[tianjing@tianjing-ops Tue Nov 15 07:25 PM ~/test1]$cp -r /etc/skel/.?* .
cp: cannot access `/etc/skel/../cron.d’: Permission denied
cp: cannot open `/etc/skel/../sudoers’ for reading: Permission denied
cp: cannot open `/etc/skel/../security/opasswd’ for reading: Permission denied
cp: cannot open `/etc/skel/../at.deny’ for reading: Permission denied
cp: cannot open `/etc/skel/../default/useradd’ for reading: Permission denied
cp: cannot open `/etc/skel/../iscsi/iscsid.conf’ for reading: Permission denied
cp: cannot open `/etc/skel/../cups/printers.conf’ for reading: Permission denied
cp: cannot access `/etc/skel/../cups/ssl’: Permission denied

[tianjing@tianjing-ops Tue Nov 15 07:40 PM ~/test1]$cp -rfv /etc/skel/.??* .
`/etc/skel/.bash_logout’ -> `./.bash_logout’
`/etc/skel/.bash_profile’ -> `./.bash_profile’
`/etc/skel/.bashrc’ -> `./.bashrc’
`/etc/skel/.emacs’ -> `./.emacs’
`/etc/skel/.mozilla’ -> `./.mozilla’
`/etc/skel/.mozilla/extensions’ -> `./.mozilla/extensions’
`/etc/skel/.mozilla/plugins’ -> `./.mozilla/plugins’