一.在理解linux下环境变量及文件执行顺序前,要先理解下面的相关概念:
<!--[if !supportLists]-->1.<!--[endif]-->login shell:用户通过终端登录凭借用户名和密码登录控制台的动作是login shell,也就是说最终 会调用login命令的操作都可称之为login shell。
<!--[if !supportLists]-->2.<!--[endif]-->non-login shell:用户在图形界面启动一个terminal,或者执行/bin/bash,/usr/bin/bash都属于 non-login shell。
3.对于login shell读取文件的顺序是:/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
/etc/profile 是必须要执行的,后面3个谁存在就执行谁(然后后面的就不会再执行)。
关于~ 是什么目录:表示当前登录用户的用户目录(可以通过cd ~ pwd 来得知)
4.
4.1./etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行
通过查看脚本的注释介绍,表明该脚本是用于系统环境和启动程序的,用户登录设置的功能和别名则 在/ect/bashrc脚本中,所以,/etc/profile是所有用户的环境;然后脚本会在执 行/etc/profile.d/*.sh的相关脚本,用来搜集shell的设置(具体的脚本未截图),若其中有环境设定的 话,也会被全局引用。
4.2.我的linux上存在.bash_profile脚本(root用户)
可以看出,先判断是否存在.bashrc脚本,若存在的话,执行(而该脚本文件主要用来设置别名的,从注 释可以看出);然后就会来设置特殊的环境和开始程序(即是用户级别的设置)。
4.3.现在我们查看.bashrc脚本
脚本设置了几个命令别名;然后判断是否存在/ect/bashrc脚本,存在就执行
4.4.我们查看/ect/bashrc脚本
可以看出使用来对非登录的shell设置。
总结:通过上面的脚本查看,大致总结一下,环境设置的文件执行顺序Login shell配置文件执行顺序:
/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
/etc/profile.d/*.sh:用来搜集shell的设置
~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息(环境变量或程序 等),当用户登录时,该文件仅仅执行一次!即是为用户而定制脚本文件。
non-login shell配置文件执行顺序:
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
~/.bashrc: 该文件包含命令别名信息,也可以设置环境或程序等(登录时或者每次打开新的shell 时---即non-login shell,该文件就被读取)。
/etc/bashrc:该脚本在Login shell和non-login shell都会被执行,但我们通过上面脚本查看用来 对非登录的shell设置
二:通过ls -a 查看root用户的工作目录
.bash_logout:脚本不难理解,用户退出时,要被执行的脚本
.bash_history:即是对该用户的执行的脚本命令的记录(histroy命令即对该文件查看)。