Centos环境变量文件的读取流程
Posted kikkiking
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos环境变量文件的读取流程相关的知识,希望对你有一定的参考价值。
首先说一下login shell和non-login shell的区别。所谓login shell简单来说就是需要输入用户名、密码的登录方式;而non-login shell的登录方式就是不需要输入用户名、密码的登录方式。举个更具体的例子,当你不管登录到tty1~tty6那个界面输入账户密码,这就是login shell;而当你登录有Xwindow的级别,当你右键新建一个命令终端时,此时就是non-login shell。
login shell
上流程图:
/etc/profile--------------------------------------------------->~/.bash_profile---------------->开始操作 bash
| |
| |
|- - ->/etc/inputrc |- - ->~/.bashrc
| |
|- - ->/etc/profile.d/*.sh <- - - - - - - - - - - - - - - - -/etc/bashrc
|
/etc/sysconfig/i18n
大致流程就是这样的,实线方向是主流程,虚线是文件的调用。
login shell 在启动的时候,一定会读取两个配置文件:/etc/profile、~/.bash_profile(或 ~/.bash_login 或 ~/.profile)
一、/etc/profile
这个文件是系统的整体设定,也是每个使用者登录 bash 的时候一定会读取的配置文件。主要有一下几个变量:
PATH:环境变量。会依据 UID 决定是否要包含 sbin 的系统目录
MAIL:依据 UID 决定使用者的邮箱
USER:用户名
HOSTNAME:主机名
HISTSIZE:历史命令记录数
/etc/profile 文件还会还会调用其他的文件,包括以下文件:
- /etc/inputrc
自定义按键输入功能。 - /etc/profile.d/*.sh
bash 窗口的颜色、语系、命令别名等的一些设定。
当你需要自定义一些整体环境变量时,就可以在这个目录下新建一个以.sh结尾的文件。
- /etc/sysconfig/i18n
语系设定
二、~/.bash_profile
bash 在读取完整体环境设定的 /etc/profile 并呼叫其他配置文件之后,接下来会读取使用者的个人配置文件。在 login shell 的环境下,读取的个人配置文件主要有以下三个:
1.~/.bash_profile
2.~/.bash_login
3.~/.profile
bash 只会读取上面文件中的一个,而且读取的优先级 1 > 2 > 3。
.bash_profile文件的内容,主要在PATH路径上添加了/bin路径;且如果存在~/.bashrc还会去读取~/.bashrc
三、~/.bashrc
主要的定义了rm、cp、mv三个命令别名,并调用/etc/bashrc
四、/etc/bashrc
这个文件主要设置了umask的值变量PS1的值。
如果这个文件丢失,那么,你的界面提示符就是变成这样,因为你的PS1变量的值没有设置:
五、其他的配置文件
1、~/.history 存储了你的历史命令
2、~/.bash_logout 可以自定义注销时自动执行的操作
non-login shell
弄清楚了login shell的登录流程,那么non-login shell的登录顺序就很好理解了。
non-login方式登录时是直接从~/.bashrc往后读取的。
所以如果你要设置自己的环境变量,只需要写到~/.bashrc文件里面就可以了
以上是关于Centos环境变量文件的读取流程的主要内容,如果未能解决你的问题,请参考以下文章
systemctl 启动某个程序,程序读取某个环境变量不生效的问题