shell 会话分为两种类型:login shell 和 non-login shell
所谓login shell 就是指登录时需要输入用户名与密码的shell。例如,在ubuntu 12.04中,ctrl+alt+F2会启动一个 login shell。所谓non-login shell 是指登录时不需要输入用户名与密码的shell。例如,我使用的ubunutu 12.04桌面版中,ctrl+alt+T打开终端时,不需要的登录。
login shell 登录时依次读取配置文件:/etc/.profile和~/.bash_profile(或~/bash_login,或~/.profile),在这些文件中可以设置环境变量。non-login shell登录时依次读取:/etc/bash.bashrc 和 ~/.bashrc ,在这些文件中也可以设置环境变量。同时non-login shell 还会从父进程继承环境变量。
注:linux的发行版本不同,上述启动文件的读取会有所差异。例如ubuntu 12.04中,login shell启动时也会读取~/.bashrc
我们可以在启动文件中设置自己需要的环境变量,一般在~/.bash_profile(或~/bash_login,或~/.profile)和~/.bashrc中设置。例如:我们为python添加模块搜索路径时,需要设置环境变量PYTHONPATH。我们可以在~/.bashrc中添加用户变量:
PYTHONPATH="/home/用户名/python" #我想添加路径/home/用户名/python
export PYTHONPATH #利用export 将用户变量变成环境变量