环境变量
环境变量是在操作系统中存储的一些特定于环境的信息,这些信息可以被操作系统和运行在其中的应用程序使用
环境变量分为临时和永久两种
临时的环境变量就是会话为单位,当会话关闭的时候环境变量也会随之消失
永久的环境变量记录在文件中,在每次开机的时候会自动读取
不管是临时还是永久的环境变量都是同样的写法:
export val=0
区别在于,临时环境变量只需要在命令行中写入这句话就可以了
而永久的环境变量需要在特定的配置文件中写入
对于永久的环境变量,分为系统级别和用户级别,系统级别提供给所有的用户使用
用户级别是只有特定用户使用
读取顺序
文件 | 描述 |
---|---|
/etc/profile | 系统级别的配置文件,这里的环境参数面向所有的用户。所有登录 shell 会首先读取这个文件。 |
~/.bash_profile | 用户级别的配置文件,系统配置文件读取结束后优先寻找该文件。用于登录 shell 的配置。 |
~/.bash_login | 用户级别, ~/.bash_profile 不存在的话,会自动寻找 ~/.bash_login 。用于登录 shell 的配置。 |
~/.profile | 用户级别, ~/.bash_profile 和 ~/.bash_login 都不存在的话,bash 会读取 ~/.profile 。面向更通用的 sh 及其衍生 shell,不仅仅是 bash。 |
~/.bashrc | 用户级别,再打开一个新的非登录 shell(例如新终端窗口),不会再次激活 ~/.bash_profile 、~/.bash_login 或 ~/.profile ,但是 ~/.bashrc 中的内容仍然会重新运行。用于非登录 shell 的配置。 |
大多数系统中使用的都是bash版本,所以所使用的配置文件都在上面5种的范围之内
包括macOS实际上也支持bash
其他版本sh的读取顺序
macOS的zsh的读取顺序
配置文件 | 描述 |
---|---|
/etc/zshenv | 系统级别的环境变量配置文件,首先被加载。所有 zsh 会话都会读取这个文件,无论是登录 shell 还是非登录 shell。 |
~/.zshenv | 用户级别的环境变量配置文件,接下来被加载。所有 zsh 会话都会读取这个文件,无论是登录 shell 还是非登录 shell。 |
/etc/zprofile | 系统级别的登录 shell 配置文件,仅在登录 shell 时读取。 |
~/.zprofile | 用户级别的登录 shell 配置文件,仅在登录 shell 时读取。 |
/etc/zshrc | 系统级别的 shell 配置文件,在所有交互式 shell 中读取。 |
~/.zshrc | 用户级别的 shell 配置文件,在所有交互式 shell 中读取。 |
/etc/zlogin | 系统范围内的登录后配置文件,仅在登录 shell 时读取。 |
~/.zlogin | 用户级别的登录后配置文件,仅在登录 shell 时读取。 |
ksh的读取顺序
配置文件 | 描述 |
---|---|
/etc/profile | 系统级别的配置文件,对所有用户有效。登录 shell 首先读取这个文件。 |
~/.profile | 用户级别的配置文件。/etc/profile 读取完毕后,登录 shell 读取该文件。 |
~/.kshrc | 用户级别的 ksh 配置文件,交互式 shell 中读取。 |
$ENV | 用户定义的环境变量,指向一个包含 ksh 配置的文件(如 ~/.kshrc )。在每个新 shell 启动时读取。 |