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-sun export PATH=$PATH:${JAVA_HOME}/bin
只有在启动 shell 会话时才会读取 ~/.bashrc,因此对 ~/.bashrc 做出的修改只有在关闭 shell 终端会话并重启才会生效。也可以用 source 命令使 bash 重新读取 ~/.bashrc 文件:
source ~/.bashrc
export 命令
命令格式
export [-fn] [name[=value] ...]
export -p
命令参数
-f
引用 shell 函数。
-n
删除指定的环境变量。
-p
列出所有的环境变量。