一、login shell与non-login shell
介绍配置文件之前,介绍一下这两个概念
- login shell:登录bash需要完整的登录流程,成为login shell。例如:当你登录一个终端时,需要登录用户名与密码。此bash称为login shell
- non-login shell:假设你以X Window登录Linux后,再以X的图形化接口启动终端,此时这个终端接口并没有需要再次的输入账号密码,该bash就称为non-login shell。你在这个bash环境下输入bash进入一个子进程,这个子进程也是一个non-login shell
注意:login shell和non-login shell开启一个bash时,会读的配置文件也会不同
二、配置文件分类
1.分类
配置文件根据设置,可以分为两种类型
- ①系统配置文件:这是系统整体的配置文件,最好不要修改
- ②用户个人配置文件:属于用户个人的配置,不同用户的配置文件也不同。如果想要修改自己的数据,可以修改这种类型的文件
2.相关配置文件
- /etc/profile:系统配置文件。只有login shell才会读取
- ~/.bash_profile或~/.bash_login或~/.profile:用户个人配置文件。只有login shell才会读取
- ~/.bashrc:non-login shell才会读取
3.注意事项
- bash登录时先读取系统配置文件之后,就会读取用户个人配置文件
- 不同的用户,用户的这些配置文件都不同
三、/etc/profile:系统配置文件
1.功能
- 这个配置文件可以利用用户标识符(UID)来决定很多重要的变量数据,这也是每个用户登录bash一定会读取的配置文件
2.注意事项
- 只有login shell才会读取
- login shell登录bash时读取的整体环境配置文件其实只有/etc/profile,其他配置文件都是由/etc/profile文件调用的
3.包含的内容与会调用的文件
下面只是一些部分内容,并没有完全列出来
- PATH:会根据UID决定PATH变量要不要包含sbin的系统命令目录
- MAIL:根据账号设置好用户的mailbox到/var/spool/mail/账号名
- USER:根据用户的账号设置此变量内容
- HOSTNAME:根据主机的hostname命令决定此变量内容
- HISTSIZE:历史命令记录条数
- umask:包括root默认的022,而一般用户为002等
- /etc/profile.d/*.sh文件:这个目录内的.sh文件需要具有r的权限,那么这些文件就会被/etc/profile调用。一般这些.sh文件规范了bash操作界面的颜色、语系、命令的别名等。如果一些用户想要设置一些共享的命令别名,可以在这个目录下自行建立扩展名为.sh的文件并将所需数据写入其中
- /etc/locale.conf文件:这个文件是由/etc/profile.d/lang.sh文件调用的(/etc/profile间接调用),这也是我们决定bash默认使用何种语系的重要配置文件。文件中重要的变量为LANG/LC_ALL等
- /usr/share/bash-completion/completions/*文件:这个目录下的文件是由/etc/profile.d/bash_completion.sh文件调用的。这个文件中包含了一些重要命令,这些重要命令可以让我们使用[tab]键进行命令补齐、文件名补齐、命令的参数/选项补齐等功能
四、~/.bash_profile、~/.bash_login、~/.profile:用户配置文件
1.功能
- 这几个配置文件,都是用户个人的配置信息文件
2.注意事项
- login shell才会读取
- 事实上:这三个文件不一定都存在,并且bash只会读取三个文件中的一个,读取到一个之后就不会读取另外文件。读取的顺序是~/.bash_profile==>~/.bash_login==>~/.profile。
我的系统中只有~/.profile文件,没有前面那两个文件
3.~/.profile包含的内容与会调用的文件
- .bashrc文件:可以看到有个if语句判断是否有.bashrc文件,如果有就调用这个文件
- PATH变量:由于PATH环境变量在/etc/profile里面已经设置过了,这里又以累加的方式将自己的家目录下的/bin目录到环境变量中,这样自己家目录/bin下的文件或者程序就可以直接输入命令来执行,不需要再输入绝对路径来执行
五、~/.bashrc文件
1.概念
- 当你以non-login shell这种非登录情况取得bash操作界面时,此bash读取的配置文件就是这个文件
2.注意事项
- 此bash只读取这个文件,不会读取其他文件。因为以non-login shell登录
- 不同用户登录,此文件的数据也不同
3.~/.bashrc文件包含的内容与会调用的文件
- 会调用很多其他文件
- 还有很多变量设置、以及用户其他的设置
六、其他相关配置文件
1./etc/man_db.conf文件
- 这个文件有的系统可能存在,有的系统可能不存在
- 功能:记录了说明文件的路径。当我们输入man命令时,man page回去哪里寻找说明文件
- 什么时候修改这个文件哪?例如当我们安装一个软件时,你这个软件的man page文件可能是/usr/local/软件名称/man,那么你需要将这个说明文件的路径加到/etc/man_db.conf中去,否则使用man命令查询不到该软件的说明信息,除非使用绝对路径
2.~/.bash_history文件
- 这个文件前面介绍过。记录了我们输入的历史命令
- 这个文件能记录多少条历史记录,与HISTFILESIZE这个变量有关
3.~/.bash_logout文件
- 功能:这个文件记录了一些操作与功能:当我注销bash后,系统帮我做个哪些事情
- 从下图中可以看中,当我注销时,bash只是帮我们清掉屏幕信息而已
- 如果可以,我们可以将一些备份或者其他重要的任务写在这个文件中(例如清空缓存),当你bash后,这些任务就会自动执行
七、source命令
1.功能
- 更新环境配置文件
- 应用场景:当你修改你的配置文件之后,需要注销再登录,配置文件新内容才会生效。如果使用source命令,则在此次登录中更新就可以使用更新之后的配置文件,不需要再注销重新登录
2.格式
下面这两种命令都是可以的
- source 配置文件名
- . 配置文件名