<?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/tags/%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8/</link>
        <description>Recent content in 環境變數 on Dev TLDRLSS</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Fri, 07 Aug 2026 18:31:00 +0800</lastBuildDate><atom:link href="https://dev.tldrlss.com/tags/%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>刪除 .zshrc 的環境變數為什麼還是生效？為什麼重新執行 source ~/.zshrc 無法清除舊的環境變數？為什麼重開終端機視窗環境變數依舊還在？IDE 內建終端機與 Terminal 軟體該如何徹底清除環境變數？</title>
        <link>https://dev.tldrlss.com/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/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>
