在学习shell编程的时候,有几个配置文件相当重要,但是小编我一直混淆,每次使用的时候都要把他们之间的作用、关系查一查,此处给大家总结一下:   用户在登录的时会执行几个配置文件:/etc/profile 、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc这些配置文件都是给每一个用户设置环境信息。编写过一些较复杂的shell的猿都会知道,这几个文件是相当重要,接下来小编一一给大家介绍:  

 /etc/profile:

   这是系统最主要的shell设置文件,也是用户登陆时系统最先检查的文件,有关重要的环境变量都定义在此,其中包括PATH,USER,LOGNAME, MAIL,HOSTNAME,HISTSIZE,INPUTRC等。而在文件的最后,它会检查并执行/etc/profile.d/*.sh的脚本。

 ~/.bash_profile:

  这个文件是每位用户的bash环境设置文件,它存在与于用户的主目录中,当系统执行/etc/profile 后,就会接着读取此文件内的设置值。在此文件中会定义USERNAME,BASH_ENV和PATH等环境变量,但是此处的PATH除了包含系统的$PATH变量外加入用户的“bin”目录路径。

 ~/.bashrc:

  接下来系统会检查~.bashrc文件,这个文件和前两个文件(/etc/profile 和~.bash_profile)最大的不同是,每次执行bash时,~.bashrc 都会被再次读取,也就是变量会再次地设置,而**/etc/profile,~./bash_profile只有在登录时才读取**。就是因为要经常的读取,所以~/.bashrc文件只定义一些终端机设置以及shell提示符号等功能,而不是定义环境变量。

 ~/.bash_login:

  如果~.bash_profile文件不存在,则系统会转而读取~.bash_login这个文件内容。这是用户的登陆文件,在每次用户登陆系统时,bash都会读此内容,所以通常都会将登陆后必须执行的命令放在这个文件中。

 ~/.profile:

  如果~./bash_profile ~./bash_login两个文件都不存在,则会使用这个文件的设置内容,其实它的功能与~/.bash_profile相同。

 ~/.bash_logout:

  如果想在注销shell前执行一些工作,都可以在此文件中设置。     经过以上的介绍大家应该对这些配置文件有了更深刻的了解,小编在这里再给大家总结一下:

  • 登录时才会加载的文件:/etc/profile、~.bash_profile、.profile、~.bash_login
  • 登录shell就会加载文件有:~.bashrc
  • 执行时的优先级:/etc/profile > (~/.bash_profile | ~/.bash_login | ~/.profile) >~/.bashrc > /etc/bashrc > ~/.bash_logout