终端重启后环境变量丢失,本质是配置未写入对应shell的初始化文件或未重载:macOS Catalina后默认zsh,需改~/.zshrc并source生效;export PATH须追加而非覆盖,GUI应用需通过launchd配置environment.plist。
终端重启后环境变量丢失,本质是配置没写进正确的初始化文件,或写对了但没让 shell 重新加载。macos 默认用 zsh,不是 bash,这点错就全白忙。
确认你改的是哪个 shell 的配置文件
执行:
echo $SHELL
如果输出 /bin/zsh(Catalina 及之后系统默认),就要改 ~/.zshrc;
如果输出 /bin/bash,才该动 ~/.bash_profile。
常见错误:在 ~/.bash_profile 里加了 export,但系统实际跑的是 zsh → 完全不读、不生效。
确保写法正确,别覆盖系统 PATH
错误写法(会清空原有路径,导致 ls、python 找不到):
PATH="/your/path"
正确写法(追加到开头或结尾):
export PATH="/your/path:$PATH" 或
export PATH="$PATH:/your/path"
注意:
• 必须带 export 关键字,否则只是 shell 变量,不是环境变量;
• 路径中不要有空格,如有必须用引号包裹,但不推荐;
• 用 $HOME 代替 ~,避免某些启动场景下不展开。
改完必须手动重载,不能只靠新开终端
编辑保存 ~/.zshrc 后,运行:
source ~/.zshrc
才能让当前终端立刻生效。否则新开一个窗口虽会读取,但已打开的标签页、iTerm2 多个 tab、VS Code 内置终端等,仍沿用旧环境。
验证是否生效:
echo $PATH —— 看输出里有没有你加的路径;
which command-name —— 看命令是否定位到新路径下的可执行文件。
GUI 应用(如 VS Code、PyCharm)不继承终端 PATH
图形界面程序不走终端 shell 初始化流程,而是从 launchd 继承环境。解决方法:
• 创建或编辑 ~/Library/LaunchAgents/environment.plist;
• 在其中声明 HTTP_PROXY、PATH 等变量;
• 运行 launchctl load ~/Library/LaunchAgents/environment.plist 加载;
• 重启 GUI 应用(不是终端)才能生效。


















