用env命令可一次性列出当前终端会话中所有已生效的导出环境变量,按字母序排列,包含PATH、HOME等核心变量;printenv用于查单个或多个变量值,适合脚本调用;set则显示更全面的shell状态,包括未导出变量和函数。

在MacBook上确认当前终端会话中所有已生效的环境变量,是排查命令找不到、路径异常或开发环境配置失效的第一步。直接查看原始输出比翻配置文件更可靠,因为环境变量可能来自多层文件叠加或临时设置。
用env命令一次性列出全部环境变量
打开“访达”→“应用程序”→“实用工具”→双击“终端”,启动后直接输入:
env
回车后立即滚动显示所有变量,格式为变量名=变量值,按字母顺序排列。PATH、HOME、USER、SHELL这些核心变量一定在其中。
这一步输出的是当前Shell会话**实际生效**的全部导出变量,不包含未导出的shell内部变量,也不受配置文件是否被source过的影响——只要它此刻在内存里,就一定会出现。
用printenv精准查单个变量或快速过滤
方法一:只看PATH内容
printenv PATH
方法二:同时查HOME和USER
printenv HOME USER
方法三:模糊搜索含“JAVA”的变量(大小写不敏感)
printenv | grep -i java
【注意】printenv不加参数时行为与env完全一致,但加了变量名后只输出值本身,不带“变量名=”前缀,适合脚本调用。
用set命令查看更底层的Shell状态
第一步:执行set命令
set
第二步:因输出量极大,必须分页查看
set | less
第三步:在less界面中按 / 键,输入PATH后回车,可高亮定位;按 n 跳到下一个匹配项;按 q 退出。
set会列出所有shell变量(包括未导出的)、函数定义和位置参数,比如你用var=123定义但没export的变量,env和printenv都看不到,但set能看到。调试时若发现某个变量“明明设了却不起作用”,就该用set确认它是否真的存在且未被覆盖。
把当前环境变量快照保存为文本文件
执行以下命令将完整列表写入当前目录下的env_now.txt:
env > env_now.txt
检查是否生成成功:
ls -l env_now.txt
查看文件内容:
cat env_now.txt
这个文件是你当前会话的环境变量“快照”,可用于对比不同终端窗口的差异,或发给同事协助排查。下次想重新加载,直接source env_now.txt不行——它不是合法的shell脚本,只是纯文本记录。


















