在 CentOS(以及大多数 Linux 发行版) 中,env 命令用于 显示或设置环境变量并在指定环境下运行程序。下面按常见用法详细说明。
env
输出示例:
USER=root
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
LANG=zh_CN.UTF-8
✅ 等价于:
printenv
env | grep PATH
或:
printenv PATH
env 临时设置环境变量env MY_VAR=hello echo $MY_VAR
⚠️ 注意:
echo $MY_VAR 是在 当前 shell 展开,所以可能看不到效果。
✅ 正确示例:
env MY_VAR=hello bash -c 'echo $MY_VAR'
输出:
hello
env VAR1=abc VAR2=123 bash -c 'echo $VAR1 $VAR2'
env -i PATH=/bin:/usr/bin bash
说明:
-i:忽略当前环境变量✅ 常用于:
env -i ./test.sh
env 与 #!/usr/bin/env 的关系(非常重要)#!/usr/bin/env bash
作用:
PATH 中查找 bash✅ 比下面这种更灵活:
#!/bin/bash
| 参数 | 说明 |
|---|---|
-i |
忽略当前环境变量 |
-u |
删除指定环境变量 |
VAR=value |
设置环境变量 |
env -u PATH bash
export 的区别(重点)| 命令 | 作用范围 |
|---|---|
export |
当前 shell 及子进程 |
env |
只对 后面执行的命令 有效 |
✅ env 不会修改当前 shell 环境
env LANG=en_US.UTF-8 ls
env -i env
env # 查看所有环境变量
env VAR=value cmd # 临时设置变量运行命令
env -i cmd # 干净环境运行命令
env -u VAR cmd # 删除变量运行命令
如果你有 具体使用场景(比如:Docker、crontab、脚本调试、Java 环境),我可以给你更针对性的示例。