用env命令可查看当前shell会话实际生效的全部导出环境变量,按字母序显示为“变量名=变量值”格式;printenv用于精准查询单个/多个变量值或模糊搜索;set命令则显示包括未导出变量在内的完整shell状态,适合深度调试。

在Mac终端中确认当前会话实际生效的全部系统环境变量,是排查命令找不到、路径异常或开发工具失效的第一步。直接读取内存中的实时变量列表,比翻查配置文件更准确——因为变量可能来自多层文件叠加、临时export或Shell启动时的自动加载。
用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











