export 变量名=值
命令;永久生效需修改配置文件(如~/.bashrc),添加export 变量名=值
,保存后执行source ~/.bashrc
或重启终端应用更改。环境变量基础操作
查看环境变量
- 当前会话变量:
printenv # 查看所有变量 echo $PATH # 查看PATH变量
- 系统全局变量:
查看/etc/environment
或/etc/profile
文件。
临时设置变量(仅当前终端有效)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk # 临时定义 export PATH=$PATH:/opt/myapp/bin # 追加路径
删除临时变量
unset JAVA_HOME # 移除变量
永久配置环境变量
根据作用范围选择配置文件:
✅ 用户级配置(仅影响当前用户)
-
修改
~/.bashrc
(推荐)nano ~/.bashrc
末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk export PATH=$PATH:$JAVA_HOME/bin
生效命令:
source ~/.bashrc # 或重启终端
-
~/.profile
或~/.bash_profile
适用于登录会话(如SSH登录),配置语法同上。
✅ 系统级配置(影响所有用户)
-
/etc/environment
(仅存储变量名值对)sudo nano /etc/environment
添加:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk"
无需
export
,重启生效。 -
/etc/profile.d/
目录(模块化推荐)
创建自定义脚本:sudo nano /etc/profile.d/my_vars.sh
export API_KEY="your_key_here" export PATH=$PATH:/opt/global_app/bin
所有用户登录时自动加载。
关键配置文件对比
配置文件 | 作用范围 | 生效时机 | 适用场景 |
---|---|---|---|
~/.bashrc |
当前用户 | 打开新终端 | 日常开发环境变量 |
~/.profile |
当前用户 | 用户登录时 | GUI登录或SSH会话 |
/etc/environment |
所有用户 | 系统启动时 | 系统级路径(如PATH) |
/etc/profile.d/ |
所有用户 | 用户登录时 | 需全局共享的变量 |
💡 优先级:用户级配置 > 系统级配置,冲突时以用户级为准。
验证与调试技巧
-
检查变量是否生效:
echo $JAVA_HOME # 输出值确认 which java # 验证PATH是否包含路径
-
调试配置文件:
bash -x ~/.bashrc # 查看脚本执行过程
-
环境变量持久化失败?排查步骤:
- 文件路径是否正确(如
~/.bashrc
非/root/.bashrc
) - 是否遗漏
export
关键字(/etc/environment
除外) - 执行
source
或重新登录
- 文件路径是否正确(如
安全注意事项 ⚠️
-
敏感信息保护:
❌ 避免在公共文件中存储密码、API密钥:# 不安全做法(易被读取) export DB_PASSWORD="123456"
✅ 改用加密工具如
pass
或会话级临时变量。 -
最小权限原则:
- 用户级变量优先于系统级配置。
- 限制
/etc/profile.d/
脚本权限:sudo chmod 640 /etc/profile.d/my_vars.sh
掌握环境变量管理是Linux用户必备技能,通过合理选择配置文件(用户级 ~/.bashrc
或系统级 /etc/profile.d/
),既可定制个性化环境,又能确保系统安全,遇到问题时,优先通过 echo $VAR
和 source
命令验证配置,逐步排查根源。
引用说明:
- Linux手册页(
man bash
)- Filesystem Hierarchy Standard (FHS) 3.0
- Ubuntu官方文档:环境变量配置指南
- 安全实践参考:OWASP环境变量安全建议
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/18515.html