首先说一下login shell 和non-login shell,因为它们所读取的配置文件是不一样的。


login shell:登入时需要输入账号密码的shell,就是login shell

non-login shell:就是在你使用图形界面的时候直接进入的shell就叫做non-login shell


一般来说:login shell 会读取的配置文件有/etc/profile和(~/.bash_profile、 ~/.bash_login、 ~/.profile)------只会读取括号中三个当中的一个。

/etc/profile 是一个所有用户设置的整体变量

这个文件设置的变量有

  PATH :环境变量

  MAIL:邮件路径

  USER:用户

  HOSTNAME:主机名 

  HISTSIZE:历史命令记录大小。

/etc/profile 这个文件还会调用一些文件  例如:/etc/inputrc 用户自定义的输入的按键功能    /etc/profile.d/*sh   里面是一些脚本文件  /etc/sysconfig/i18n 定义bash使用何种语系


个人配置文件主要有三个~/.bash_profile、 ~/.bash_login、 ~/.profile   ,这三个文件使用读取顺序的,如果有~/.bash_profile,则不会读取其他两个文件,依次类推   。

~/.bash_profile  一般是设置个人的环境变量 

我的Centos6.8 中没有 ~/.bash_login、 ~/.profile  这两个文件。

non-login shell会读取 bashrc 文件,这个文件主要是定义了一些命令别名。

另外 还有.~/bash_history 和~/bash_logout 两个文件。其中 bash_history 记录历史命令  ,bash_logout是定义在关机的时候要做的操作。

总结:

/etc/profile:此文件为系统的为每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从 /etc/profile.d  目录的配置文件中搜集shell的设置.
/etc/bashrc  :为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile  :每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc  :该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout :当每次退出系统(退出bash shell)时,执行该文件. 

bash_profile  、 .bashrc  、和.bash_logout
上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。
.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有 命令都会被bash执行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。
.bashrc  文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境。
.bash_logout 在退出shell时被读取。所以我们可把一些清理工作的命令放到这文件中。

登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个(根据不同的linux操作系统的不同,命名不一样),执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。



Logo

更多推荐