【现学现忘&Shell基础】— 22.主要的环境变量配置文件
1、source命令
通过source
命令可以直接环境变量配置文件。
命令格式如下:
[root@localhost ~]# source 配置文件
或用.
[root@localhost ~]# . 配置文件
提示:
配置完成的环境变量配置文件,是需要用户退出并重新登陆才能生效,
并不一定需要重启。
那如果重新登陆觉得很不方便,可以使用
source
命令和.
命令重新加载该配置文件,使其直接生效。
2、Linux系统中环境变量配置文件
(1)登录时生效的环境变量配置文件
在Linux系统登录时,主要生效的环境变量配置文件有以下五个:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
一类是放在/etc/
目录下的环境变量配置文件,一类是放在家目录中的环境变量配置文件。
区别在于放在/etc/
目录下的环境变量配置文件中的配置内容是对所有用户生效的,
而放在家目录中的环境变量配置文件中的配置内容只对当前用户生效。
(2)/etc/profile
环境变量配置文件
在用户登录过程先调用/etc/profile
文件
在这个环境变量配置文件中会定义一些默认环境变量:
-
USER
变量:根据登录的用户,给这个变量赋值(就是让USER变量的值是当前用户)。 -
LOGNAME
变量:根据USER变量的值,给这个变量赋值。 -
MAIL
变量:根据登录的用户,定义用户的邮箱为/var/spool/mail/用户名
。 -
PATH
变量:根据登录用户的UID是否为0,判断PATH变量是否包含/sbin
,/usr/sbin
和/usr/local/sbin
这三个系统命令目录。这里需要注意的是,我们登陆时候看到的
PATH
环境变量的内容,可能不是上边三个目录,是因为后边加载的环境变量配置文件对PATH
环境变量重新赋值了,就覆盖了。 -
HOSTNAME
变量:填加主机名,给这个变量赋值。 -
HISTSIZE
变量:定义历史命令的保存条数。 -
umask
:定义umask
默认权限。注意/etc/profile
文件中的umask
权限是在“有用户登录过程(也就是输入了用户名和密码)”时才会生效。
(3)/etc/profile.d/*.sh
环境变量配置文件
由/etc/profile
文件调用/etc/profile.d/*.sh
文件。
也就是/etc/profile
文件会调用/etc/profile.d/
目录下所有以.sh
结尾的文件。这里最常用的就是lang.sh
文件,而这个文件又会调用/etc/sysconfig/i18n
文件。(/etc/sysconfig/i18n
文件就是我们前面讲过的默认语系配置文件)
/etc/profile
文件中通过一个for循环调用的/etc/profile.d/*.sh
文件,如下:
(4)~/.bash_profile
环境变量配置文件
由/etc/profile
文件调用~/.bash_profile
文件(家目录中)。
~/.bash_profile
文件就没有那么复杂了,这个文件主要实现了两个功能:
-
调用
~/.bashrc
文件(如果有则调用)。 -
在PATH变量后面叠加了
:$HOME/bin
这个目录。也就是说,如果我们在自己的家目录中建立bin目录,然后把自己的脚本放入
~/bin
目录,就可以直接执行脚本,而不用通过目录执行了。
(5)~/.bashrc
环境变量配置文件
由~/.bash_profile
文件调用~/.bashrc
文件。
在~/.bashrc
文件中主要实现了:
- 定义默认别名,把自己定义的别名也放入这个文件。
- 调用
/etc/bashrc
文件。
提示:定义别名的时候,定义在
/etc/profile
、~/.bash_profile
、~/.bashrc
、/etc/bashrc
这个四个配置文件中的哪个文件中都可以,因为他们是一条线,顺序加载的,只要别名的值没有被覆盖。
(6)/etc/bashrc
环境变量配置文件
由~/.bashrc
文件调用了/etc/bashrc
文件。
在/etc/bashrc
文件中主要定义了以下内容:
-
PS1
变量:也就是用户的提示符,如果我们想要永久修改提示符,就要在这个文件中修改。 -
umask
:定义umask
默认权限。这个文件中定义的
umask
是针对“没有登录过程(也就是不需要输入用户名和密码时,比如从一个终端切换到另一个终端,或进入子Shell)"时生效的(非登陆情况下)。如果是“有用户登录过程”,则是/etc/profile文件中的umask生效。
-
PATH变量:会给PATH变量追加值,这些值是在“没有登录过程”时才生效的(非登陆情况下)。
-
/etc/profile.d/*.sh
文件,这是在“没有用户登录过程”时才调用(非登陆情况下)。在“有用户登录过程”时,
/etc/profile.d/*.sh
文件已经被/etc/profile
文件调用过了。