温馨提示×

CentOS env和export区别

小樊
38
2026-07-09 06:14:33
栏目: 智能运维

CentOS / Linux 中,envexport 都和环境变量有关,但作用、用途和层级不同。下面用通俗方式说明它们的区别。


一、export 是什么?

exportshell 内置命令,用于把变量导出为环境变量

作用

  • 当前 shell 及子进程可以访问该变量
  • 不影响父进程或其他 shell

示例

MY_VAR=hello
export MY_VAR

或合并写:

export MY_VAR=hello

验证

bash
echo $MY_VAR

✅ 子 shell 可以访问
❌ 父 shell 或新终端不能访问


二、env 是什么?

env一个外部程序(/usr/bin/env),用于:

  1. 查看当前环境变量
  2. 在“干净”或指定环境中运行程序

1️⃣ 查看环境变量

env

输出当前所有环境变量(类似 printenv)。


2️⃣ 临时设置环境变量运行程序

env VAR1=123 VAR2=abc command

示例:

env JAVA_HOME=/usr/java bash

✅ 只在 command 运行期间有效
❌ 不会影响当前 shell


三、核心区别对比

对比项 export env
类型 shell 内置命令 外部命令
主要用途 导出变量给子进程 查看变量 / 临时运行程序
是否影响当前 shell ✅ 是 ❌ 否
是否影响子进程 ✅ 是 ✅ 仅对指定命令
能否永久生效 ❌ 否 ❌ 否

四、常见误区

❌ 误区 1:env 能设置永久变量

env A=1

❌ 没意义,变量立刻消失


❌ 误区 2:export 能影响其他终端

export A=1

❌ 只对当前 shell 及其子进程有效

✅ 永久生效要写:

/etc/profile
~/.bashrc
~/.bash_profile

五、典型使用场景

✅ 当前 shell 永久生效

export PATH=$PATH:/usr/local/bin

✅ 临时运行程序

env LANG=en_US.UTF-8 python3 app.py

✅ 查看环境变量

env

六、一句话总结

export 是“把变量交给子进程”,env 是“临时给命令一个环境或查看环境”。

如果你愿意,我也可以结合 CentOS 7 / 8 的 systemd、crontab、sudo 环境变量问题 给你讲更实战的例子。

0