1. 前言:为什么环境变量总是“玄学”?
很多 Linux 使用者都有过这样的经历:
“我明明 export 了 PATH,怎么重启就没了?”
“为什么我装的工具只能在终端里用?”
刚好由于最近遇到一个实际问题,今天我们就用一张流程图 + 一张对比表,彻底讲清楚 Linux 环境变量。
2. 什么是环境变量(用一句话讲清楚)
环境变量 = 进程启动时继承的一组“键值对”配置
它不是文件,不是命令,而是:存在于进程内存中、由父进程传给子进程、用来告诉程序“你现在在哪里、你是谁”。
3. Linux 环境变量的核心逻辑
3.1 PATH 是怎么查找命令的?
export PATH=/a:/b:/c
系统做的是:去 /a找、找到了就用、没找到才继续 /b→ /c
3.2 两种写法的本质区别
export PATH=$PATH:/home/tool/gpu*** 【兜底】
export PATH=/home/tool/gpu***:$PATH【优先】
即:谁在前,谁赢
4. 环境变量加载流程图?(重点)
📌 记住一句话:登录 ≠ bash ≠ systemd ≠ cron5. PATH 设置方式对比矩阵
7. 常见误区 & 踩坑案例
❌ 把 PATH 写在 ~/.bashrc
❌ 以为 export 是永久的
❌ 以为 cron 会读 bashrc
❌ 以为 PATH 会全局生效
8. 最佳实践(推荐配置方式)
✅ 系统级变量 → /etc/profile.d/*.sh
✅ 用户变量 → ~/.bash_profile
✅ 服务变量 → systemd
✅ 脚本变量 → 脚本内写 PATH
9. 总结一句话
Linux 环境变量不是“玄学”,而是:分层加载 + 继承传递 + 顺序查找