环境变量设置方法:

  1. /etc/profile 文件中添加变量,此方法是对所有用户永久生效的:export HISTFILESIZE=10000
  2. 在用户目录下的 /root/.bash_profile 文件中增加变量,此方法是针对单一用户永久生效的
  3. 直接在终端运行 export 命令定义变量,此方法是是针对当前 BASH 临时生效的,退出之后就失效了

    环境变量相关配置文件

    /etc/profile

    :::tips 这个文件对每个 shell 及所有用户都有效,当用户第一次登录时,该文件就被执行
    当被修改时,必须重启才会生效 :::

    /etc/bashrc

    :::tips /etc/bashrc 这个文件当用户运行bash shell时被执行,当被修改后,不用重启只需要打开一个新的 bash 即可生效 :::

    /etc/profile.d/

    :::tips /etc/profile.d/ 可以理解为是 /etc/profile 的一部分,只不过按类别或功能拆分成若干个文件进行配置 :::

    /etc/environment

    :::tips /etc/environment 是系统的环境变量,/etc/profile是所有用户的环境变量,前者与登录用户无关,后者与登录用户有关,当同一变量在两个文件里有冲突时,以用户环境为准 :::

    ~/.profile,~/.bashrc

    :::tips ~/.profile,~/.bashrc 是用于设置指定用户的私有环境变量 :::

    ~/.bash_profile

    :::tips ~/.bash_profile 文件是当前用户的私有环境信息配置文件,用户登录时执行一次,默认情况是用于设置环境变量并执行当前用户的 .bashrc 文件(注意:Centos7系统命名为.bash_profile,其他系统可能是.bash_login或.profile) :::

    ~/.bash_logout

    :::tips ~/.bash_logout 文件在每次退出bash shell时执行,可以把一些清理工作的命令放进这个文件 :::

    系统环境变量读取优先级:

    系统首先寻找 /etc/profile 脚本文件并执行,然后根据其内容读取额外的设定的文档,如 /etc/profile.d
    然后根据不同使用者帐号,去其根目录读取 ~/.bash_profile(在这个文件中有执行.bashrc的脚本,.bashrc脚本里会去调用/etc/bashrc文件),如果这读取不了就读取 ~/.bash_login,这个也读取不了才会读取
    ~/.profile
    在退出shell时,还会执行 ~/.bash_logout 文件

因此用户主目录下文件的执行的顺序为:~/.bash_profile->~/.bash_login->~/.profile
系统执行文件顺序为

  1. /etc/profile->(~/.bash_profile | ~/.bash_login | ~/.profile)->.bashrc->/etc/bashrc->~/.bash_logout

推荐阅读

系统环境变量 · PHP知识总结 · 看云