<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>环境变量 on Dev TLDRLSS</title>
        <link>https://dev.tldrlss.com/zh-cn/tags/%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F/</link>
        <description>Recent content in 环境变量 on Dev TLDRLSS</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 07 Aug 2026 18:31:00 +0800</lastBuildDate><atom:link href="https://dev.tldrlss.com/zh-cn/tags/%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>删除 .zshrc 的环境变量为什么还是生效？为什么重新执行 source ~/.zshrc 无法清除旧的环境变量？为什么重开终端窗口环境变量依旧还在？IDE 内置终端与 Terminal 软件该如何彻底清除环境变量？</title>
        <link>https://dev.tldrlss.com/zh-cn/article/2026/08/zshrc-env-clear-mac-terminal-environment-variables/</link>
        <pubDate>Fri, 07 Aug 2026 18:31:00 +0800</pubDate>
        
        <guid>https://dev.tldrlss.com/zh-cn/article/2026/08/zshrc-env-clear-mac-terminal-environment-variables/</guid>
        <description>&lt;img src="https://dev.tldrlss.com/global-assets/images/scenario/developer-pitfall-1.jpg" alt="Featured image of post 删除 .zshrc 的环境变量为什么还是生效？为什么重新执行 source ~/.zshrc 无法清除旧的环境变量？为什么重开终端窗口环境变量依旧还在？IDE 内置终端与 Terminal 软件该如何彻底清除环境变量？" /&gt;&lt;p&gt;明明已经从 &lt;code&gt;~/.zshrc&lt;/code&gt; 把某个 &lt;code&gt;环境变量&lt;/code&gt; （像是 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;）删掉了，但回到终端一查，它居然还在！&lt;/p&gt;
&lt;p&gt;就算重新执行 &lt;code&gt;source ~/.zshrc&lt;/code&gt; 也完全没用？&lt;/p&gt;
&lt;h2 id=&#34;如何检查环境变量是否存在又是被哪个配置文件写入的&#34;&gt;如何检查环境变量是否存在？又是被哪个配置文件写入的？
&lt;/h2&gt;&lt;p&gt;在动手清理之前，首先需要确认变量是否仍然留在目前的内存中，以及究竟是哪个配置文件在自动加载它。&lt;/p&gt;
&lt;h3 id=&#34;1-检查内存变量&#34;&gt;1. 检查内存变量
&lt;/h3&gt;&lt;p&gt;检查目前 &lt;code&gt;Terminal&lt;/code&gt; 的内存中是否依然残留该 &lt;code&gt;环境变量&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;env &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i anthropic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-搜索配置文件来源&#34;&gt;2. 搜索配置文件来源
&lt;/h3&gt;&lt;p&gt;全面搜索 &lt;code&gt;Zsh&lt;/code&gt;、&lt;code&gt;Bash&lt;/code&gt; 及系统层级配置文件，找出究竟是哪个文件写入了该变量&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -rn &lt;span class=&#34;s2&#34;&gt;&amp;#34;ANTHROPIC_BASE_URL&amp;#34;&lt;/span&gt; ~/.zshrc ~/.zprofile ~/.zshenv ~/.zlogin ~/.bashrc ~/.bash_profile ~/.profile /etc/zshenv /etc/zprofile /etc/profile /etc/environment 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!--adsense--&gt;
&lt;h2 id=&#34;为什么修改-zshrc-后旧的环境变量还在&#34;&gt;为什么修改 .zshrc 后旧的环境变量还在？
&lt;/h2&gt;&lt;p&gt;其实，当你打开终端时，&lt;code&gt;环境变量&lt;/code&gt; 就已经被加载到那一套连接的“内存”里了。&lt;/p&gt;
&lt;p&gt;就算你修改了文件，或者重新执行 &lt;code&gt;source ~/.zshrc&lt;/code&gt;，这只会“重新加载”配置文件里的内容，并不会自动把已经存在内存中的旧变量给清除掉。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;source&lt;/code&gt; &lt;strong&gt;命令只会覆盖或新增变量，并不会帮你“删除”变量&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这时候最简单的解决方法有以下几种：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;清除方式&lt;/th&gt;
          &lt;th&gt;操作指令 / 动作&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;开启新窗口&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;开启全新终端标签页&lt;/td&gt;
          &lt;td&gt;新的 &lt;code&gt;Shell Process&lt;/code&gt; 会重新读取最新的 &lt;code&gt;~/.zshrc&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;手动清除&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;unset ANTHROPIC_BASE_URL&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;直接从目前内存中删除指定的 &lt;code&gt;环境变量&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;重置 shell&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;exec zsh -l&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;重新加载目前 &lt;code&gt;Shell&lt;/code&gt; 的内存状态&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;重开终端窗口还是没用揪出排查三大元凶&#34;&gt;重开终端窗口还是没用？揪出排查三大元凶
&lt;/h2&gt;&lt;p&gt;那为什么有时候明明开了全新的终端窗口，旧的 &lt;code&gt;环境变量&lt;/code&gt; 依然阴魂不散？&lt;/p&gt;
&lt;p&gt;这时候问题就不在 &lt;code&gt;~/.zshrc&lt;/code&gt; 了，而是来自“父进程（Parent Process）”的继承！&lt;/p&gt;
&lt;p&gt;当你从某个软件启动终端时，子进程会直接复制父进程当下的环境变量快照。&lt;/p&gt;
&lt;p&gt;如果遇到这种顽固的 &lt;code&gt;环境变量&lt;/code&gt;，通常是以下三个常见原因：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;触发原因&lt;/th&gt;
          &lt;th&gt;解决方式&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;IDE 内置终端&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;VS Code&lt;/code&gt;、&lt;code&gt;Cursor&lt;/code&gt; 或 &lt;code&gt;Antigravity&lt;/code&gt; 启动时记录了当时的环境变量快照&lt;/td&gt;
          &lt;td&gt;按下 &lt;code&gt;Cmd + Q&lt;/code&gt; 彻底退出 &lt;code&gt;IDE&lt;/code&gt; 后重新开启&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;终端软件未关闭&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Mac 上的 &lt;code&gt;Terminal&lt;/code&gt; 或 &lt;code&gt;iTerm2&lt;/code&gt; 仅关闭窗口（&lt;code&gt;Cmd + W&lt;/code&gt;），主程序仍在后台运行&lt;/td&gt;
          &lt;td&gt;按下 &lt;code&gt;Cmd + Q&lt;/code&gt; 彻底退出 &lt;code&gt;Terminal&lt;/code&gt; 软件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;tmux&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;tmux&lt;/code&gt; 后台 &lt;code&gt;Server&lt;/code&gt; 持续运作，新标签页会一直继承启动时的设置&lt;/td&gt;
          &lt;td&gt;执行 &lt;code&gt;tmux kill-server&lt;/code&gt; 关闭后台服务&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;!--adsense--&gt;
&lt;h2 id=&#34;重开软件依然无效检查第三方工具与系统层级设置&#34;&gt;重开软件依然无效？检查第三方工具与系统层级设置
&lt;/h2&gt;&lt;p&gt;如果上面三招都试过了，&lt;code&gt;环境变量&lt;/code&gt; 依然顽固地出现在 &lt;code&gt;Terminal&lt;/code&gt; 中，那可能是更高层级的系统设置或第三方工具在幕后搞鬼。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;更高的系统权限或包装脚本会让环境变量在每次启动时自动恢复&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这时候可以使用以下两大检测命令：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;检测目标&lt;/th&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;系统全局变量&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;launchctl getenv ANTHROPIC_BASE_URL&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;检查是否有第三方代理工具使用 &lt;code&gt;launchctl setenv&lt;/code&gt; 写入全局变量&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;命令包装脚本&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;type claude&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;检查目前的命令是原始可执行文件，还是被包装成带有默认变量的 &lt;code&gt;wrapper&lt;/code&gt; 脚本&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;彻底清除环境变量的标准排查步骤&#34;&gt;彻底清除环境变量的标准排查步骤
&lt;/h2&gt;&lt;p&gt;下次在修改或删除 &lt;code&gt;~/.zshrc&lt;/code&gt; 中的 &lt;code&gt;环境变量&lt;/code&gt; 时，记得先确认：目前的终端是不是继承了旧的 &lt;code&gt;Parent Process&lt;/code&gt; 设置？&lt;/p&gt;
&lt;p&gt;按照以下排查顺序，就能轻松找到源头并解决问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先执行 &lt;code&gt;unset 变量名称&lt;/code&gt; 或开启全新终端窗口。&lt;/li&gt;
&lt;li&gt;若使用 &lt;code&gt;VS Code&lt;/code&gt; 或 &lt;code&gt;Cursor&lt;/code&gt; 等 &lt;code&gt;IDE&lt;/code&gt;，按下 &lt;code&gt;Cmd + Q&lt;/code&gt; 彻底重启 &lt;code&gt;IDE&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;若使用 &lt;code&gt;tmux&lt;/code&gt;，执行 &lt;code&gt;tmux kill-server&lt;/code&gt; 重置后台服务。&lt;/li&gt;
&lt;li&gt;检查 &lt;code&gt;launchctl getenv&lt;/code&gt; 与 &lt;code&gt;type&lt;/code&gt; 命令，排查系统层级与包装脚本。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        
    </channel>
</rss>
