用 env > env_snapshot.txt 可导出当前终端所有生效环境变量为纯文本快照,按字母序排列、格式为“变量名=值”,适用于查看、对比和调试;如需可 source 的脚本,须用 sed 's/^/export /' 补全 export 关键字。
mac 上导出当前终端会话中所有已生效的环境变量到外部脚本文件,核心目标是生成一个可复用、可查看、可对比的纯文本快照——不是直接生成能被 source 执行的合法 shell 脚本,而是记录真实运行时状态。
用 env 命令导出全部环境变量为纯文本
这是最常用且最可靠的方式,输出的是当前 Shell 实际加载并导出的所有变量(如 PATH、HOME、USER 等),按字母顺序排列:
- 在终端中执行:
env > env_snapshot.txt - 该命令会把完整列表写入当前目录下的
env_snapshot.txt - 验证是否成功:
ls -l env_snapshot.txt(看文件是否存在)cat env_snapshot.txt | head -n 5(看前几行是否为PATH=...格式)
只导出特定变量(适合调试或备份关键项)
若只需保存 JAVA_HOME、ANDROID_HOME 这类业务变量,避免冗余信息,可用 printenv 精准提取:
- 导出单个变量:
printenv JAVA_HOME > java_home.txt - 导出多个变量(每行一个值,无变量名):
printenv JAVA_HOME ANDROID_HOME PATH > key_vars.txt - 若需保留“变量名=值”格式(更易读),加点小处理:
echo "JAVA_HOME=$(printenv JAVA_HOME)" > env_backup.shecho "PATH=$(printenv PATH)" >> env_backup.sh
注意:这不是 sourceable 的配置文件
直接用 env > xxx.sh 生成的文件是纯文本记录,每一行形如 PATH=/usr/bin:/bin,但缺少 export 关键字,所以不能直接 source 加载。如果真需要可重载的脚本文件,得手动补全:
- 例如,把
env_snapshot.txt转成可 source 的格式:sed 's/^/export /' env_snapshot.txt > env_loadable.sh - 然后就能用:
source env_loadable.sh - 但要注意:某些变量(如
PS1、SHLVL)不建议重新导出,可能干扰当前终端行为
补充:图形界面应用不认终端导出的变量?
如果你导出的变量是为了让 VS Code、PyCharm 等 GUI 工具识别,仅靠终端 env 输出不够。这类应用启动时不读取 shell 配置,需额外配置 environment.plist 或通过启动器(如 open -a "Visual Studio Code")继承环境。导出的 env_snapshot.txt 可作为排查依据,确认哪些变量本应存在却未被 GUI 进程继承。

















