一、环境变量是什么?
环境变量(Environment Variables)是操作系统或应用程序运行时使用的动态键值对,用于存储系统路径、用户配置和程序运行参数等核心信息。
- 核心作用:
- 定义Shell的工作环境(如终端样式、语言编码)
- 控制程序行为(如Java的
JAVA_HOME
、Python的PYTHONPATH
) - 简化路径操作(如全局命令调用)
二、常用环境变量
变量名 | 作用说明 | 示例值 |
---|---|---|
PATH | 系统命令搜索路径 | /usr/bin:/usr/local/bin |
HOME | 当前用户主目录路径 | /home/ubuntu |
USER | 当前登录用户名 | root |
SHELL | 当前Shell解释器路径 | /bin/bash |
PS1 | 终端提示符样式配置 | \u@\h:\w\$ |
LANG | 系统语言和字符集设置 | en_US.UTF-8 |
EDITOR | 默认文本编辑器路径 | /usr/bin/vim |
三、环境变量管理命令
1. 查看变量
printenv # 查看所有环境变量
echo $PATH # 查看指定变量
env | grep "USER" # 过滤特定变量
2. 设置临时变量(当前会话有效)
export TEMP_VAR="test_value" # 定义新变量
export PATH=$PATH:/opt/myapp/bin # 追加路径到PATH
3. 删除变量
unset TEMP_VAR # 删除变量(立即生效)
四、持久化配置环境变量
1. 查看当前Shell类型
echo $SHELL # 显示默认Shell(如/bin/bash)
echo $0 # 显示当前使用的Shell(可能为bash/zsh/sh)
2. 配置文件选择
Shell类型 | 用户级配置文件 | 系统级配置文件 |
---|---|---|
Bash | ~/.bashrc 、~/.bash_profile | /etc/profile 、/etc/bashrc |
Zsh | ~/.zshrc | /etc/zshrc |
Fish | ~/.config/fish/config.fish | /etc/fish/config.fish |
配置示例(Bash):
# 编辑 ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# 立即生效
source ~/.bashrc
五、配置文件加载顺序
-
登录Shell(如SSH登录、
su - username
):
/etc/profile
→/etc/profile.d/*.sh
→~/.bash_profile
→~/.bashrc
→/etc/bashrc
-
非登录Shell(如终端直接启动):
~/.bashrc
→/etc/bashrc
注意:不同Shell加载顺序有差异,建议使用
echo "Loaded config" >> ~/.bashrc
测试验证!
六、常见问题解决
1. 变量修改后不生效
- 检查项:
- 是否执行
source
命令或重启终端? - 是否修改了错误的配置文件(如使用zsh却编辑了
.bashrc
)? - 变量值是否存在语法错误(如路径缺少
:
分隔符)?
- 是否执行
2. 命令找不到(PATH问题)
# 诊断步骤:
which python # 检查命令路径
echo $PATH # 查看PATH是否包含目标路径
export PATH=/missing/path:$PATH # 临时修复
3. 多用户环境冲突
- 系统级配置:在
/etc/environment
中设置公共变量 - 用户隔离:在
~/.bashrc
中覆盖用户专属变量
七、总结
环境变量是Linux系统的核心配置工具,掌握其使用方法能显著提升开发效率。关键要点:
- 优先级策略:临时变量 > 用户级配置 > 系统级配置
- 配置安全:修改系统级文件前备份(如
sudo cp /etc/environment /etc/environment.bak
) - 跨Shell兼容:在
~/.profile
中设置通用变量兼容不同Shell
实战建议:
- 使用
export MY_VAR=$(date)
动态生成变量值 - 通过
env > env_backup.txt
备份当前环境变量