Linux(CentOS / Ubuntu / Debian)系统环境变量笔记
- Linux系统
- 25天前
- 135热度
- 0评论
Linux(CentOS / Ubuntu / Debian)系统环境变量笔记
快速速查表
| 场景 | 推荐配置位置 | 备注 |
|---|---|---|
| 临时调试 | 直接 export |
当前终端有效 |
| 当前用户永久 | ~/.bashrc | 最常用,所有交互终端加载 |
| 所有用户(模块化) | /etc/profile.d/*.sh | 易管理 |
| 所有进程最通用 | /etc/environment | 不依赖 shell,最早加载 |
| systemd 服务 | .service 的 Environment= | 必须单独设置 |
| cron 任务 | 脚本内 export 或 crontab 指定 | PATH 常需手动补全 |
| 图形程序 | /etc/environment 或 ~/.profile |
一、什么是环境变量
环境变量(Environment Variables)是以 KEY=VALUE 形式存在的系统变量,用于向 Shell、程序和脚本传递运行环境信息。
常见用途:
- 指定命令搜索路径(PATH)
- 配置语言编码(LANG、LC_ALL)
- 控制软件行为(JAVA_HOME、PYTHONPATH 等)
- 区分开发/测试/生产环境
典型示例:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
HOME=/home/username
SHELL=/bin/bash
USER=username
LANG=en_US.UTF-8
LD_LIBRARY_PATH=/usr/local/lib
二、查看、管理与临时设置
查看命令:
env或printenv:列出所有环境变量printenv VAR或echo $VAR:查看指定变量export -p:显示所有已导出的环境变量set:列出所有 shell 变量(含局部变量)
临时设置(当前 Shell 会话有效):
export TEST_VAR="value"
export PATH="$PATH:/new/path" # 追加路径
删除变量:
unset TEST_VAR
三、永久配置方式与加载顺序
3.1 系统级(所有用户生效):
-
/etc/environment(强烈推荐最通用方式)
最先由 PAM 加载,所有进程(包括 systemd、cron、图形程序)都能继承。
格式:VAR=value(不能有 export、引号、复杂脚本)。JAVA_HOME=/opt/java MY_APP_ENV=production -
*/etc/profile.d/.sh**(推荐模块化方式)
所有发行版均支持,便于管理。# /etc/profile.d/myapp.sh export MY_APP_HOME=/opt/myapp export PATH="/opt/myapp/bin:$PATH" -
/etc/profile、/etc/bashrc(或 Ubuntu/Debian 的 /etc/bash.bashrc)
3.2 用户级(当前用户生效):
- 推荐统一写入
~/.bashrc(所有交互式终端都会加载) - CentOS 也可写
~/.bash_profile(会自动 source ~/.bashrc) - Ubuntu/Debian 常用
~/.profile
示例(~/.bashrc):
export JAVA_HOME=/opt/java
export PATH="$HOME/bin:$PATH" # 用户路径建议后置
export PATH="/opt/mybin:$PATH" # 系统/第三方路径建议前置
加载顺序简要(Bash 登录 shell):
/etc/environment → /etc/profile → /etc/profile.d/* → ~/.bash_profile(或 ~/.profile) → ~/.bashrc
CentOS / Ubuntu / Debian各发行版差异
| 项目 | CentOS | Ubuntu / Debian |
|---|---|---|
| 默认 Shell | bash | bash |
| 用户登录变量 | ~/.bash_profile |
~/.profile |
| 全局变量 | /etc/profile |
/etc/profile |
| 推荐方式 | /etc/profile.d |
/etc/profile.d |
👉 结论:环境变量机制一致,配置文件加载顺序略有差异。
四、PATH 配置最佳实践
- 错误:
export PATH="/opt/bin"(覆盖系统路径,导致命令找不到) - 正确:
- 系统级/第三方工具前置:
export PATH="/opt/bin:$PATH" - 用户个人脚本后置:
export PATH="$PATH:$HOME/bin"
- 系统级/第三方工具前置:
五、特殊场景处理(常见痛点)
以下场景不会自动加载 ~/.bashrc 或 ~/.profile,需要单独配置:
-
systemd 服务
在 .service 文件中:[Service] Environment="ENV=prod" Environment="JAVA_HOME=/opt/java" EnvironmentFile=/etc/myapp/env.conf # 可加载文件 -
cron 定时任务
cron 环境极简,PATH 很短。- 在 crontab 中指定:
* * * * * PATH=/usr/local/bin:/usr/bin:/bin /path/script.sh - 或脚本开头手动 export:
#!/bin/bash export PATH=/usr/local/bin:/usr/bin:/bin export JAVA_HOME=/opt/java - 在 crontab 中指定:
-
图形界面启动的程序
优先使用 /etc/environment 或 ~/.profile 设置。
六、使修改生效与注意事项
source ~/.bashrc或. ~/.profile(立即生效当前终端)- 重新登录(大多数情况生效)
- 重启系统(/etc/environment 一定生效)
注意事项:
- 系统文件修改需 sudo
- /etc/environment 不支持复杂逻辑
- 变量名统一大写,语义清晰
- 优先用户级配置,避免影响全局