linux 设置环境变量Shell会话有两种类型:login shell 会话和 non-login shell 会话。login shell 会话会提示用户输入用户名和密码,如虚拟控制台会话。而在GUI中启动的终端会话则是一个典型的 non-login shell 会话。
用户登录系统后,bash程序就会启动并读取一系列启动文件。login shell 会读取一个或多个启动文件,如下表所示:
文件
说明
/etc/PRofile
适用于所有用户的全局配置脚本
~/.bash_profile
用户的个人启动文件。可扩展或重写全局配置脚本
~/.bash_login
若 ~/.bash_profile 缺失,则 bash 尝试读取此脚本
~/.profile
若~/.bash_profile 与~/.bash_login 均缺失,则 bash 尝试读取此文件。在基于 Debian 的 Linux 版本中(如 Ubuntu),这是默认值
non-login shell 读取的启动文件如下:
文件
说明
/etc/bash.bashrc
适用于所有用户的全局配置脚本
~/.bashrc
用户的个人启动文件。可扩展或程序全局配置脚本
non-login shell在读取以上启动文件之外,还会继承父进程的环境,父进程通常是一个login shell。
用户可以通过修改启动文件自定义环境变量,例如在~/.bashrc 中配置:
export java_HOME=/usr/lib/jvm/java-7-sunexport PATH=$PATH:${JAVA_HOME}/bin
只有在启动 shell 会话时才会读取 ~/.bashrc,因此对~/.bashrc 做出的修改只有在关闭 shell 终端会话并重启才会生效。也可以用source 命令使 bash 重新读取~/.bashrc 文件:
source ~/.bashrc