查看当前环境变量
echo ${PATH}
# 换行查看
echo -e ${PATH//:/'\n'}
加载流程
注意: 这里的加载流程是 ubuntu 在 bash 下的过程,如果为 zsh 或者 fish 请查看官方文档
用户登录后加载profile和bashrc的流程
# 系统级
/etc/environment
# 无用户级
/etc/profile -> /bin/sh -> /etc/bash.bashrc
-> /etc/profile.d/*.sh
# 用户级
$HOME/.profile-> $HOME/.env -> $HOME/.bash_profile -> $HOME/.bashrc
-> /etc/bashrc
系统启动时shell读取的顺序
/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env
环境变量控制文件介绍
环境变量默认值
如果是超级用户登录,在没有执行/etc/profile之前,PATH已经设定了下面的路径,作为环境变量
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
如果是普通用户,PATH在/etc/profile执行之前设定了以下的路径,作为环境变量
/usr/local/bin:/bin:/usr/bin
全局环境变量
全局环境变量设置 /etc/environment
/etc/environment
是设置整个系统的环境
而 /etc/profile
是设置所有用户的环境
environment 与登录用户无关,profile 与登录用户有关
/etc/environment 配置例子
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
http_proxy="http://127.0.0.1:1080/"
https_proxy="https://127.0.0.1:1080/"
socks_proxy="socks://127.0.0.1:1080/"
系统/etc/profile
-
/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)时,执行该文件.
另外
/etc/profile
中设定的变量(全局)的可以作用于任何用户
而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量 他们是
父子关系
环境变量文件运行方式
~/.bash_profile
是交互式 login
方式进入 bash 运行的
~/.bashrc
是交互式 non-login
方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者