login-shell 和 non-login shell 对环境配置文件的读取

来源:互联网 发布:淘宝实体店怎么认证 编辑:程序博客网 时间:2024/05/17 06:30
当我们进入bash,我们会发现我们已经有了很多变量可以用了,即使我们还什么都没操作。
为什么?
这就不得不提到系统的几个环境配置文件了。
其实,在bash启动的时候,它会去读取一些环境配置文件,这些配置文件又可以分为全局系统的配置文件和用户个人偏好配置文件。

在介绍这些配置文件与bash两者的作用机制之前,我们得先来了解一下 login-shell 和 non-login shell。

这是因为两种的shell读取的环境配置文件不一样。



login-shell:
取得bash时需要完整的登录流程的,就称为login-shell.比如,你用tty1~tty6登录时,需要输入用户的帐号与密码,此时取得的bash就称为login-shell。


non-login shell:

取得bash时不需要登录。你在gnome桌面环境中打开了一个bash,不需要输入用户名和密码进行验证,这样你取得的bash就是non-login shell.



好了,继续我们的话题。


我们先来看一看当我们登录后,login-shell 会读取哪些配置文件。


一般来说,login-shell 会读取两个文件:


1. /etc/profile   :系统整体的设置
2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile,其中需要注意的是这三个文件里面只会读一个:按照这个顺序哪个存在就读哪个。(我的ubuntu里只有.profile)


这里有两个方面需要注意
1. bash 读取 /etc/profile 时会调用另外一些文件,
    如 /etc/inputrc 和 /etc/profile.d/*sh 和 /etc/sysconfig/i18n。
2. ~/.profile 会调用 ~/.bashrc


non-login shell 仅会调用 ~/.bashrc 文件


事实上还有一些配置文件会影响到你的 bash 操作:
~/.bash_history
我们的历史命令所在地。
每次读取bash 时,bash会先读取这个文件,把历史命令读入内存,所以每次我们登录bash时都能查看一些历史命令。


~/.bash_logout
这个文件记录了当我注销bash后系统帮我做完什么操作后才离开
默认情况下只是帮我们清掉屏幕的信息而已


后记:
'source'和'.'是与环境配置文件有关的两个命令。
当我们修改了 /etc/profile 或是 ~/.profile后,要想使修改生效,往往不得不注销然后重新登录,而通过这两个命令我们就可以省去这一步。
source ~/.profile 或 .  ~/.profile
作用:将不同的环境变量写在不同的文件中,在不同的情境下执行不同的文件,这样就会使变量的设置简洁化。
原创粉丝点击