在Linux系统中每个用户都有自己专属的运行环境,由各自的环境变量定义。用户可以设置临时环境变量:

export NAME=”hello word”

exho $NAME

env命令用来查看当前用户的环境变量。

下面介绍登录linux环境变量执行过程:
首先启动/etc/profile文件,然后启动用户目录下的~/.bash_profile, ~/.bash_login或~/.profile三个文件中的一个,执行的顺序为:~/.bash_profile, ~/.bash_login, ~/.profile。如果~/.bash_profile文件存在的话,一般还会执行~/.bashrc文件。因为~/.bashrc文件中还会调用./etc/bashrc,所以总的执行顺序为:

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

各文件作用说明:

  • /etc/profile:此文件为系统的每个用户设置环境变量,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。
  • /etc/bashrc:为每一个运行bash shell的用户执行此文件。当bash shell被打开时,该文件被读取(就是每次新开一个终端,都会执行bashrc)。
  • ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。
  • ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时,以及每次打开新的shell时,该文件被读取。
  • ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件,另外,/etc/profile中设定的变量可以作用于任何用户,而~/.bashrc等中设定的变量只能继承/etc/profile中的变量,它们是“父子”关系。
  • ~/.bash_profile:是交互式、login方式进入bash运行的,~/.bashrc是交互式、non-login方式进入bash运行的,通常两者设置大致相同,所以通常前者会调用后者。

对于用户的shell初始化而言是先执行/etc/profile,再读取文件/etc/environment;对整个系统而言是先执行/etc/environment。

登录系统的顺序:

/etc/environment–>/etc/profile–>$HOME/.profile–>$HOME/.env

/etc/profile:是所有用户的环境变量

/etc/environment:是系统的环境变量

登录系统时shell读取顺序是:

/etc/profile–>/etc/environment–>$HOME/.profile–>$HOME/.env