
Linux - 环境变量
在 Linux 系统中,环境变量是用来设置记录系统运行时使用的一些配置的变量。
一、分类
大体分为以下两种:
- 系统环境变量:系统级别的环境变量,在所有用户的环境中都有效。
- 通常全部大写,如
PATH,HOME等。
- 通常全部大写,如
- 局部环境变量:只对当前 shell 有效的环境变量,不会传递给子 shell 或子进程。
二、用途
- 搜索可执行文件路径,如
PATH变量。 - 储存系统配置的默认值
- 储存特定程序的配置
- 存储时区、语言、用户名等信息
- 配置 shell 的外观和行为,如
PS1变量设置命令提示符。
三、处理环境变量
Linux 不会为系统维持或存储全局环境变量
每个进程都有自己的环境变量,不同进程的环境变量不同,具体存储在
/proc/<pid>/environ这> 一虚拟文件中。 (pid为进程 ID)每个 shell 也是一个进程,它也有自己的环境变量
每个进程都有一个启动它的父进程,子进程启动时,会从父进程继承环境变量。
3.1 不同 shell 的环境变量和启动脚本
对于不同的 shell,系统会加载不同的环境变量配置文件,导致环境不同。
Login Shell: 输入密码登录系统后运行的顶层 shell/etc/profile~/.bash_profile或~/.profile或~/.bash_login
Non-Login Shell: 非登录时运行的 shell,例如通过bash开启的子 shell。~/.bashrc/etc/bashrc或/etc/bash.bashrc
/etc/profile 文件
/etc/profile 文件是系统级的环境变量配置文件,将会应用给所有用户,以及 Login Shell 和 Non-Login Shell (继承获得)。
注意
通常需要 root 权限才能修改此文件,一般情况也都不建议直接修改此文件。
如果需要修改系统环境变量,推荐在 /etc/profile.d 目录下创建 *.sh 文件(并添加执行权限),因为 /etc/profile 会自动加载这些文件。这样修改也拥有更高的可移植性。
3.2 修改环境变量
给启动的程序添加环境变量
env VAR=VALUE [command]或VAR=VALUE [command]添加局部环境变量(不可继承)
VAR=VALUE添加局部环境变量(可继承)
export VAR=VALUE
将不可继承的环境变量变成可继承的环境变量:export VAR
将可继承的环境变量变成不可继承的环境变量:export -n VAR删除环境变量:
unset VAR
3.3 读取环境变量
echo $VAR或echo ${VAR}: 打印指定环境变量的值printenv VAR: 打印指定环境变量的值env/printenv: 显示当前所有环境变量
四、常用环境变量
PATH
PATH 变量用于指定 shell 查找可执行文件的路径(用 : 分隔不同的路径)
将路径添加在 PATH 后,可以直接通过文件名直接运行程序,而不需要指定路径。
在
PATH尾部添加路径:export PATH=$PATH:/path/to/dir
在PATH头部添加路径:export PATH=/path/to/dir:$PATH
HOME
HOME 变量用于指定当前用户的主目录。
