在 CentOS(以及大多数 Linux 系统)里,env(环境变量)是大小写敏感的,原因可以从 设计约定、POSIX 标准和历史原因 几个方面来理解:
UNIX 和 POSIX 标准明确规定:
环境变量名是区分大小写的字符串
例如:
PATH
path
Path
在 POSIX 看来是 三个完全不同的变量。
CentOS 作为 Linux 发行版,严格遵循这一标准。
在 CentOS 中:
例如:
export ABC=1
export abc=2
ABC 和 abc 会 同时存在 于环境中。
很多系统程序和语言依赖这种区分:
| 变量 | 含义 |
|---|---|
PATH |
命令搜索路径 |
HOME |
用户主目录 |
LANG |
语言设置 |
http_proxy |
代理(小写) |
如果大小写不敏感,就会出现严重冲突:
Proxy vs proxyLD_LIBRARY_PATH vs ld_library_path这会破坏系统的确定性。
早期 UNIX 环境实现非常简单:
key=value\0 的字符串数组这一设计被一直沿用至今。
| 系统 | 环境变量大小写 |
|---|---|
| CentOS / Linux | ✅ 敏感 |
| Windows | ❌ 不敏感(历史兼容) |
这也是为什么 跨平台程序经常踩坑。
export Path=/usr/bin # ❌ 不会生效
echo $PATH # 仍然是原来的
正确写法:
export PATH=/usr/bin
CentOS 中
env大小写敏感,是因为 UNIX / POSIX 标准如此,且系统、程序、Shell 都依赖这一明确规则来保证行为一致。
如果你愿意,我也可以讲: