当我们通过
bash
进入Linux系统中的时候,我们还没有进行任何的操作,其实此时有许多的命令已经加载好了,这是什么原因呢?
其实是因为系统中有一些配置文件的存在,在bash
启动的时候,会自动读取这些配置文件,而这些配置文件又分为系统配置文件和用户个人配置文件
文章目录
1.两种不同的shell
在说明配置文件之前,需要先说清楚login shell
和non-login shell
,因为在这两个不同的状态下读取的配置文件是不一样的
login shell:取得bash
(就是终端)时需要完整的登录流程。
non-login shell:取得bash
的方法不需要重复登录的举动。
以上两种不同取得bash
的方式,读取的配置文件并不一致
2 login shell
我们大部分时候都是通过账号和密码登录到Linux系统中去的,所以login shell
用到的频率也会比较大一些,我们先来说一下login shell
会读取的配置文件。
2.1 /etc/profile
/etc/profile
:这个文件中存储的是整个系统的设置,它利用用户的标识符(UID)来决定很多重要的变量数据,同时这也是每一个用户登录取得bash
时,一定会读取的配置文件,所以当需要为所有用户设置环境变量时,应该修改这个文件。
2.2 ~/.bash_profile
~/.bash_profile
或~/.bash_login
或~/.profile
:属于用户个人配置,登录bash
读取完整体设置/etc/profile
,就会读取登录用户的个人配置,按照以下的顺序进行读取,bash
的login shell
设置只会按顺序读取下面三个文件中的一个(注意是一个)。
~/.bash_profile
~/.bash_login
~/.profile
之所以会有这么多的文件,只是为了照顾其他shell
转换过来的用户的习惯而已。
下面查看一下~/.bash_profile
文件里面的内容
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then #这三行进行判断,之后读取~/.bashrc
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
关于这个文件中内容有两点记录一下
-
文件中用
Path
这个变量,同时还是用export
将PATH
变为环境变量,它的作用是以累加的方式,增加用户主文件夹下的~/bin/
为额外的执行文件放置目录。这说明,你可以讲你自己创建的执行文件,放置到用户主文件夹下的~/bin/
目录,然后直接执行,而不用输入路径来找到执行文件之后才执行。 -
还有一点就是判断内容,若
~/.bashrc
文件存在,则还会读取这个文件,所以在这里我们知道了,对于login shell
,最后一个读取的配置文件就是~/.bashrc
,而这个文件读取方式是一个.
,其实就是source
命令。
2.3 source:读入环境变量配置文件的命令
bash
只有在取得的时候才会读取配置文件,所以我们刚刚修改了配置文件的话,是不会立即生效的,需要等到我们下一次登录才生效。
有一个命令可以让刚刚修改的配置文件立即生效,这就是source
。
作用:将指定的配置文件读取到本bash
的环境中。
source ~/.bashrc #这两个形式的命令是等价的
. ~/.bashrc
3 non-login shell
3.1 ~/.bashrc
对于non-login shell
,仅会读取~/.bashrc
这一个配置文件而已
对于两种不同的bash
,最后都会读取的配置文件就是~/.bashrc
参考书籍:《鸟哥的私房菜·第3版》