Mac 环境变量的加载顺序是怎么样的

阿涛小哥_8179

阿涛小哥_8179

2026-10-15

891人浏览

原创

macos catalina起默认shell为zsh,环境变量加载顺序为:/etc/zshenv→~/.zshenv→/etc/zprofile→~/.zprofile→/etc/zshrc→~/.zshrc;开发推荐统一配置到~/.zshrc,每次新开终端即生效。

mac 环境变量的加载顺序取决于你用的是哪种 shell,而自 macos catalina(10.15)起,默认 shell 已全部切换为 zsh。如果你没手动改过,那你的终端就是 zsh —— 所以重点看 zsh 的加载逻辑,bash 相关配置(如 .bash_profile)基本不生效,可直接忽略或删除。

zsh 的完整加载顺序(从早到晚,后加载的会覆盖前面)

zsh 启动时按固定顺序读取配置文件,分为系统级和用户级两类:

  • /etc/zshenv:系统级,所有 zsh 实例必加载(包括脚本中调用的非交互式 shell),优先级最高
  • ~/.zshenv:用户级,每次启动 zsh 都加载(哪怕只是跑一条 zsh -c "echo $PATH")
  • /etc/zprofile:系统级登录 shell 加载
  • ~/.zprofile:用户级,仅在登录终端(如重启后首次打开 Terminal、SSH 登录)时加载
  • /etc/zshrc:系统级交互式 shell 加载
  • ~/.zshrc:用户级,每打开一个新终端窗口/标签页都会加载,开发最常用、最推荐写环境变量的地方
  • /etc/zlogin 和 ~/.zlogin:极少使用,基本可忽略

PATH 特别说明:/etc/paths 和 /etc/paths.d/ 是独立机制

macOS 有个特殊设计:/etc/paths 和 /etc/paths.d/ 下的文件不是通过 shell 配置文件加载的,而是由系统工具 path_helper 在 shell 启动早期自动注入 PATH 的 —— 它会在 /etc/zshenv 之前或同时生效,且路径默认加在 PATH 最前面。

Krene
Krene

一款AI图像与设计工具,主要用于AI游戏美术生成和角色设计平台,适合需要提升相关任务效率的用户。

下载
  • /etc/paths:一行一个路径,系统级全局生效
  • /etc/paths.d/:目录下每个文件可放多个路径,升级更安全(不会被系统更新覆盖)
  • 注意:这些路径是“硬塞进 PATH”的,不受 export 语句控制,容易导致版本混乱(比如 Go 新旧版本冲突)

为什么你改了 ~/.zshrc 还不生效?常见原因

  • 终端没重启:改完 ~/.zshrc 后要新开终端,或运行 source ~/.zshrc
  • 工具自动写入 ~/.zshenv:NVM、PNPM、SDKMAN 等常偷偷往这里加 PATH,它比 .zshrc 先加载,会把你的设置“盖住”
  • 用了 su 或 sudo -s 切换用户但没带 -:环境变量没重载,建议用 sudo -i 或 su -
  • 图形应用(如 VS Code、IntelliJ)不读终端配置:需通过 open -a "App" --args 启动,或配置 launchd 环境

开发建议:只用这一个文件就够了

日常开发请统一把 export PATH=...、export JAVA_HOME=...、别名、插件等全写进 ~/.zshrc:

  • 它稳定可靠,每次开终端都执行
  • 避免分散在 .zprofile 或 .zshenv 中造成维护困难
  • 如果必须全局生效(如让 GUI 应用也识别),再配合 /etc/paths.d/mydev 添加关键路径

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

环境变量

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4010

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3433

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2593

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6310

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5962

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3473

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2965

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3199

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Apache Maven 官方安装指南
Apache Maven 官方安装指南

共0课时 | 0人学习

PHP基础-环境/变量/函数等
PHP基础-环境/变量/函数等

共57课时 | 18.1万人学习