linux系统中环境变量是系统运行和用户操作中非常重要的配置项,它决定了系统查找可执行程序的路径、程序运行依赖的参数等信息,添加环境变量是linux使用者经常需要操作的内容。

临时添加环境变量
临时添加的环境变量仅在当前终端会话生效,关闭终端后配置就会失效,适合临时测试场景使用。
使用export命令添加
最常用的临时添加方式是通过export命令直接设置,比如要给PATH变量添加一个新的可执行程序目录,操作如下:
# 查看当前PATH变量内容 echo $PATH # 临时添加新的路径到PATH变量,注意用冒号分隔不同路径 export PATH=$PATH:/home/user/my_bin # 再次查看PATH确认添加成功 echo $PATH
如果需要添加自定义的环境变量,比如设置程序运行的日志目录,可以直接执行:
# 添加自定义环境变量 export MY_LOG_DIR=/home/user/logs # 查看变量值 echo $MY_LOG_DIR
临时添加的特点
- 仅对当前终端会话生效,新打开的终端不会继承该配置
- 终端关闭后配置自动清除,不会修改系统任何配置文件
- 操作简单,适合临时测试某个程序是否需要特定环境变量
永久添加环境变量
永久添加的环境变量会持久化保存,不同配置方式的作用范围有所区别,用户可以根据需求选择对应的配置文件。
针对单个用户生效的配置
如果只需要让环境变量对当前登录的用户生效,可以修改用户家目录下的配置文件,最常用的两个文件是~/.bashrc和~/.bash_profile。
~/.bashrc在每次打开新的bash终端时都会加载,适合配置交互式终端需要的环境变量:
# 编辑当前用户的bashrc文件 vim ~/.bashrc # 在文件末尾添加如下内容,以添加PATH为例 export PATH=$PATH:/home/user/my_bin # 保存退出后,执行如下命令让配置立即生效 source ~/.bashrc
~/.bash_profile仅在用户登录时加载一次,适合配置登录时就需要生效的环境变量:
# 编辑bash_profile文件 vim ~/.bash_profile # 添加环境变量配置 export PATH=$PATH:/home/user/my_bin # 保存退出后重新登录或者执行source命令生效 source ~/.bash_profile
针对所有用户生效的配置
如果需要让环境变量对系统上所有用户都生效,可以修改系统级的配置文件,常用的是/etc/profile和/etc/profile.d/目录下的自定义脚本。
修改/etc/profile文件的方式:
# 需要root权限编辑系统级配置文件 sudo vim /etc/profile # 在文件末尾添加环境变量配置 export PATH=$PATH:/home/user/my_bin export GLOBAL_CONFIG=/etc/global.conf # 保存退出后,执行如下命令让当前终端生效,所有用户重新登录后也会自动加载 source /etc/profile
更推荐的方式是在/etc/profile.d/目录下新建自定义的.sh脚本,系统启动时会自动加载该目录下的所有脚本,便于管理:
# 新建自定义环境变量脚本,比如命名为my_env.sh sudo vim /etc/profile.d/my_env.sh # 在脚本中添加如下内容 export PATH=$PATH:/home/user/my_bin export MY_APP_HOME=/opt/my_app # 保存退出后,给脚本添加可执行权限 sudo chmod +x /etc/profile.d/my_env.sh # 重新登录后配置自动生效
不同配置方式的对比
为了方便选择适合的配置方式,以下是不同添加方式的特点对比:
| 配置方式 | 生效范围 | 持久化 | 适用场景 |
|---|---|---|---|
| export命令临时添加 | 当前终端会话 | 否 | 临时测试、单次运行程序 |
| 修改~/.bashrc | 当前用户的所有bash终端 | 是 | 用户个人的环境变量配置 |
| 修改~/.bash_profile | 当前用户登录时生效 | 是 | 用户登录时需要加载的配置 |
| 修改/etc/profile | 所有用户 | 是 | 系统级全局环境变量配置 |
| /etc/profile.d/下新建脚本 | 所有用户 | 是 | 系统级模块化环境变量配置 |
注意事项
- 修改系统级配置文件时需要root权限,操作前建议先备份原文件,避免配置错误导致系统异常
- 添加路径到
PATH变量时,一定要保留原有的$PATH内容,否则会覆盖系统默认的路径,导致很多常用命令无法使用 - 修改配置文件后,执行
source 配置文件路径可以让配置在当前终端立即生效,不需要重新登录或者重启系统 - 如果使用的是zsh等其他shell,对应的配置文件是
~/.zshrc等,配置逻辑和bash类似,只是文件名不同