温馨提示×

centos env如何比较差异

小樊
61
2026-09-09 07:05:44
栏目: 智能运维

在 CentOS(以及大多数 Linux 系统)里,“env 比较差异”通常指对比两个环境变量集合的不同,常见场景有:

  • 当前 shell 的 env vs 某个脚本执行后的 env
  • 用户 A 的 env vs 用户 B 的 env
  • 修改前 vs 修改后的 env

下面按最常用 → 最专业给你几种方法。


一、最简单:保存 env 再 diff(最常用)

1️⃣ 导出两份 env

env > env_before.txt
# 做一些操作,比如 source 某个脚本、切换用户
env > env_after.txt

2️⃣ 比较差异

diff env_before.txt env_after.txt

或更好看一点:

vimdiff env_before.txt env_after.txt

✅ 优点:简单直观
❌ 缺点:顺序可能不同,影响 diff


二、先排序再比较(推荐)

env | sort > env_before.txt
env | sort > env_after.txt

diff env_before.txt env_after.txt

或者一行:

diff <(env | sort) <(env | sort)

三、只比较“新增 / 删除 / 修改”的变量

查看新增或修改的变量

comm -3 <(env | sort) <(env | sort)

更清晰一点:

comm -3 \
  <(sort env_before.txt) \
  <(sort env_after.txt)

说明:

  • 第 1 列:只在 before 中
  • 第 2 列:只在 after 中
  • 无输出:完全一致

四、对比两个用户的 env(切换用户)

env | sort > user1.env
su - otheruser -c 'env | sort' > user2.env
diff user1.env user2.env

五、对比“脚本前后的 env 差异”(非常实用)

env | sort > before.env
source your_script.sh
env | sort > after.env
diff before.env after.env

六、用 set 对比(包含 shell 变量)

如果变量不是 export 的,env 看不到,要用:

set | sort > before.txt
set | sort > after.txt
diff before.txt after.txt

七、高级:只看“变化了哪些变量名”

comm -23 <(env | cut -d= -f1 | sort) \
         <(env | cut -d= -f1 | sort)

总结(直接抄)

✅ 最推荐日常用法:

diff <(env | sort) <(env | sort)

✅ 对比脚本影响:

env | sort > before
source xxx.sh
env | sort > after
diff before after

如果你能说清楚:

  • 是两个 用户?
  • 还是 脚本前后?
  • 还是 容器 / systemd 环境?

我可以给你更精准的命令。

0 踩