Linux bash中环境配置以及配置文件的读取顺序

在Linux中系统有一些环境配置文件,让bash在启动是直接读取这些配置文件,以规划好bash的操作环境。配置文件可分为全体的配置文件以及用户个人偏好配置文件。像 login 与 non-login shell 的概念 以及 各种配置文件的读取顺序,我经常忘记,所有参考了《鸟哥的Linux私房菜》记录一下,方便以后查阅。

login 与 non-login shell

  • login shell: 取得 bash 是需要完整的登入流程,就称为 login shell。例如,你要有 tty1~tty6 登入,需要输入用户的账号与密码,此时取得的 bash 就称为 login shell
  • non-login shell:取得 bash 接口的方法不需要重复登入的操作。例如,①你以 X widow 登入 Linux后,在以 X 图形化接口启动终端机,此时那个终端并没有需要再次输入账号和密码,那个 bash 的环境就称 non-login shell 。② 你原本的 bash 环境下再次下达 bash 这个指令,同样的也没有输入账号和密码,那第二个 bash(子程序)也是 non-login shell。

介绍 login 和 non-login shell 是因为这两个取得 bash 的情况下,读取的配置文件数据并不一样所致。

我们先来谈谈 login shell 。一般来说 login shell 会读取两个配置文件:
1./etc/profile:这是系统整体的设定,最好不要修改这个文件;
2.~/.bash_profile~/.bash_login~/.profile:属于使用者个人设定,你要改自己的数据,可以写在这里。
好开始聊聊这两个文件吧。

/etc/profile(login shell 才会读)

可以使用 vim 去阅读这个文件的内容,这个配置文件可以利用使用者的标识符(UID)来决定很多重要的变量数据,这也是每个使用者登入取得 bash 时一定会读取的文件,所以如果你想要帮所有者设定整体环境,可以改这里。不过,没事还是不要随便改这个文件,这个文件设定的有其他重要变量,也会引用其他文件,例如,/etc/profile.d/*.sh、/etc/local.conf等等。

~/.bash_profile(login shell 才会读)

bash 在读完整体环境设定的 /etc/profile 并藉此呼叫其他配置文件后,接下来则是会读取使用者的个人配置文件。在login shell 的 bash 环境中,所读取的个人偏好配置文件其实主要有三个,依顺序分别为:
1.~/.bash_profile
2.~/.bash_login
3.~/.profile
其实 bash 的 login shell 设定只会读取上面三个文件的其中一个,而读取的顺序则是依照上面的顺序。
最后,看看这个 login shell 的读取流程:Linux bash中环境配置以及配置文件的读取顺序_第1张图片

实线的方向是主线程流程,虚线的方向则是被调用的配置文件。

讨论 source 与 ~/.bashrc

  • source:读取环境配置文件的指令
    由于 /etc/profile 与 ~/.bash_profile 都是在取得 login shell 的时候才会读取的配置文件,所以,如果将自己的偏好设定写入上述文件后,通常都是得注销在登入后,改设定才会生效。那么,能不能直接读取配置文件而不注销登入呢?可以的,那就是利用 source 这个指令。
    利用 source 或小数的(.)都可以将配置文件的内容读进来目前的 shell 环境中。

~/.bashrc(non-login shell 会读)

谈完了 login shell 后,那么 non-login shell 这种非登入情况取得 bash 操作接口的环境配置文件又是什么? 当你取得 non-login shell 时,该 bash 配置文件仅会读取 ~/.bash 而已。

你可能感兴趣的:(Linux)