<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Biến Môi Trường on Dev TLDRLSS</title>
        <link>https://dev.tldrlss.com/vi/tags/bi%E1%BA%BFn-m%C3%B4i-tr%C6%B0%E1%BB%9Dng/</link>
        <description>Recent content in Biến Môi Trường on Dev TLDRLSS</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>vi</language>
        <lastBuildDate>Fri, 07 Aug 2026 18:31:00 +0800</lastBuildDate><atom:link href="https://dev.tldrlss.com/vi/tags/bi%E1%BA%BFn-m%C3%B4i-tr%C6%B0%E1%BB%9Dng/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Tại sao biến môi trường đã xóa khỏi .zshrc vẫn còn hiệu lực? Tại sao chạy lại source ~/.zshrc không xóa được biến cũ? Tại sao mở lại cửa sổ terminal biến môi trường vẫn còn đó? Làm thế nào để xóa triệt để biến môi trường trong IDE built-in terminal và ứng dụng Terminal?</title>
        <link>https://dev.tldrlss.com/vi/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/vi/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 Tại sao biến môi trường đã xóa khỏi .zshrc vẫn còn hiệu lực? Tại sao chạy lại source ~/.zshrc không xóa được biến cũ? Tại sao mở lại cửa sổ terminal biến môi trường vẫn còn đó? Làm thế nào để xóa triệt để biến môi trường trong IDE built-in terminal và ứng dụng Terminal?" /&gt;&lt;p&gt;Dù bạn đã xóa một &lt;code&gt;biến môi trường&lt;/code&gt; (như &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;) khỏi &lt;code&gt;~/.zshrc&lt;/code&gt;, nhưng khi kiểm tra trong terminal, nó vẫn còn ở đó một cách đáng kinh ngạc!&lt;/p&gt;
&lt;p&gt;Ngay cả khi chạy lại &lt;code&gt;source ~/.zshrc&lt;/code&gt; cũng hoàn toàn vô ích?&lt;/p&gt;
&lt;h2 id=&#34;làm-thế-nào-để-kiểm-tra-biến-môi-trường-có-tồn-tại-không-và-được-ghi-bởi-tệp-cấu-hình-nào&#34;&gt;Làm thế nào để kiểm tra biến môi trường có tồn tại không và được ghi bởi tệp cấu hình nào?
&lt;/h2&gt;&lt;p&gt;Trước khi dọn dẹp, đầu tiên bạn cần xác định xem biến đó còn tồn tại trong bộ nhớ hiện tại hay không, và tệp cấu hình nào đang tự động tải nó.&lt;/p&gt;
&lt;h3 id=&#34;1-kiểm-tra-biến-trong-bộ-nhớ&#34;&gt;1. Kiểm tra biến trong bộ nhớ
&lt;/h3&gt;&lt;p&gt;Kiểm tra xem &lt;code&gt;biến môi trường&lt;/code&gt; có còn sót lại trong bộ nhớ &lt;code&gt;Terminal&lt;/code&gt; hiện tại hay không&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-tìm-kiếm-nguồn-tệp-cấu-hình&#34;&gt;2. Tìm kiếm nguồn tệp cấu hình
&lt;/h3&gt;&lt;p&gt;Tìm kiếm toàn diện trong các tệp cấu hình của &lt;code&gt;Zsh&lt;/code&gt;, &lt;code&gt;Bash&lt;/code&gt; và cấp hệ thống để tìm tệp đã ghi biến đó&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;tại-sao-sau-khi-sửa-zshrc-thì-biến-môi-trường-cũ-vẫn-còn&#34;&gt;Tại sao sau khi sửa .zshrc thì biến môi trường cũ vẫn còn?
&lt;/h2&gt;&lt;p&gt;Thực ra, khi bạn mở terminal, &lt;code&gt;biến môi trường&lt;/code&gt; đã được tải vào &amp;ldquo;bộ nhớ&amp;rdquo; của phiên kết nối đó rồi.&lt;/p&gt;
&lt;p&gt;Ngay cả khi bạn sửa tệp hoặc chạy lại &lt;code&gt;source ~/.zshrc&lt;/code&gt;, điều này chỉ &amp;ldquo;tải lại&amp;rdquo; nội dung trong tệp cấu hình chứ không tự động xóa các biến cũ đã có trong bộ nhớ.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lệnh &lt;code&gt;source&lt;/code&gt; &lt;strong&gt;chỉ ghi đè hoặc thêm biến, chứ không &amp;ldquo;xóa&amp;rdquo; biến giúp bạn&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Lúc này, các giải pháp đơn giản nhất như sau:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Phương pháp xóa&lt;/th&gt;
          &lt;th&gt;Lệnh / Thao tác&lt;/th&gt;
          &lt;th&gt;Mô tả&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Mở cửa sổ mới&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Mở một tab terminal mới hoàn toàn&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Shell Process&lt;/code&gt; mới sẽ đọc lại tệp &lt;code&gt;~/.zshrc&lt;/code&gt; mới nhất&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Xóa thủ công&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;Xóa trực tiếp &lt;code&gt;biến môi trường&lt;/code&gt; chỉ định khỏi bộ nhớ hiện tại&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Đặt lại 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;Tải lại trạng thái bộ nhớ của &lt;code&gt;Shell&lt;/code&gt; hiện tại&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;mở-lại-cửa-sổ-terminal-vẫn-không-có-tác-dụng-truy-tìm-3-nguyên-nhân-chính&#34;&gt;Mở lại cửa sổ terminal vẫn không có tác dụng? Truy tìm 3 nguyên nhân chính
&lt;/h2&gt;&lt;p&gt;Tại sao đôi khi dù đã mở một cửa sổ terminal mới hoàn toàn, &lt;code&gt;biến môi trường&lt;/code&gt; cũ vẫn tiếp tục tồn tại?&lt;/p&gt;
&lt;p&gt;Trong trường hợp này, vấn đề không còn nằm ở &lt;code&gt;~/.zshrc&lt;/code&gt; nữa, mà là sự kế thừa từ &amp;ldquo;Tiến trình cha (Parent Process)&amp;rdquo;!&lt;/p&gt;
&lt;p&gt;Khi bạn khởi chạy terminal từ một ứng dụng phần mềm, tiến trình con sẽ sao chép trực tiếp bản chụp biến môi trường tại thời điểm đó của tiến trình cha.&lt;/p&gt;
&lt;p&gt;Nếu gặp phải &lt;code&gt;biến môi trường&lt;/code&gt; ngoan cố như vậy, thường do 3 nguyên nhân phổ biến sau:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Loại&lt;/th&gt;
          &lt;th&gt;Nguyên nhân&lt;/th&gt;
          &lt;th&gt;Cách giải quyết&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;IDE Built-in Terminal&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;VS Code&lt;/code&gt;, &lt;code&gt;Cursor&lt;/code&gt; hoặc &lt;code&gt;Antigravity&lt;/code&gt; đã ghi lại bản chụp biến môi trường khi khởi động&lt;/td&gt;
          &lt;td&gt;Nhấn &lt;code&gt;Cmd + Q&lt;/code&gt; để thoát hoàn toàn &lt;code&gt;IDE&lt;/code&gt; rồi mở lại&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ứng dụng Terminal chưa đóng&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Terminal&lt;/code&gt; hoặc &lt;code&gt;iTerm2&lt;/code&gt; trên Mac chỉ đóng cửa sổ (&lt;code&gt;Cmd + W&lt;/code&gt;), chương trình chính vẫn chạy ngầm&lt;/td&gt;
          &lt;td&gt;Nhấn &lt;code&gt;Cmd + Q&lt;/code&gt; để thoát hoàn toàn ứng dụng &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;Server&lt;/code&gt; chạy ngầm của &lt;code&gt;tmux&lt;/code&gt; hoạt động liên tục, các tab mới sẽ luôn kế thừa cài đặt lúc khởi động&lt;/td&gt;
          &lt;td&gt;Chạy &lt;code&gt;tmux kill-server&lt;/code&gt; để đóng dịch vụ chạy ngầm&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;!--adsense--&gt;
&lt;h2 id=&#34;khởi-động-lại-phần-mềm-vẫn-không-hiệu-quả-kiểm-tra-công-cụ-bên-thứ-ba-và-cài-đặt-cấp-hệ-thống&#34;&gt;Khởi động lại phần mềm vẫn không hiệu quả? Kiểm tra công cụ bên thứ ba và cài đặt cấp hệ thống
&lt;/h2&gt;&lt;p&gt;Nếu đã thử cả 3 cách trên mà &lt;code&gt;biến môi trường&lt;/code&gt; vẫn cứng đầu xuất hiện trong &lt;code&gt;Terminal&lt;/code&gt;, có thể do cài đặt hệ thống cấp cao hơn hoặc công cụ bên thứ ba đang can thiệp.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Quyền hệ thống cao hơn hoặc script bọc (wrapper) sẽ khiến biến môi trường tự động khôi phục mỗi khi khởi động&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong trường hợp này, bạn có thể sử dụng 2 lệnh kiểm tra chính sau:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Mục tiêu kiểm tra&lt;/th&gt;
          &lt;th&gt;Lệnh&lt;/th&gt;
          &lt;th&gt;Mô tả&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Biến toàn cục hệ thống&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;Kiểm tra xem có công cụ proxy bên thứ ba nào dùng &lt;code&gt;launchctl setenv&lt;/code&gt; để ghi biến toàn cục không&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Script bọc lệnh&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;type claude&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Kiểm tra xem lệnh hiện tại là tệp thực thi gốc hay đã bị bọc thành script &lt;code&gt;wrapper&lt;/code&gt; chứa biến mặc định&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;các-bước-xử-lý-chuẩn-để-xóa-triệt-để-biến-môi-trường&#34;&gt;Các bước xử lý chuẩn để xóa triệt để biến môi trường
&lt;/h2&gt;&lt;p&gt;Lần tới khi sửa hoặc xóa &lt;code&gt;biến môi trường&lt;/code&gt; trong &lt;code&gt;~/.zshrc&lt;/code&gt;, hãy nhớ kiểm tra trước: Terminal hiện tại có đang kế thừa cài đặt &lt;code&gt;Parent Process&lt;/code&gt; cũ không?&lt;/p&gt;
&lt;p&gt;Theo thứ tự kiểm tra dưới đây, bạn có thể dễ dàng tìm ra nguyên nhân và giải quyết vấn đề:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Chạy lệnh &lt;code&gt;unset TÊN_BIẾN&lt;/code&gt; trước hoặc mở cửa sổ terminal mới.&lt;/li&gt;
&lt;li&gt;Nếu dùng &lt;code&gt;IDE&lt;/code&gt; như &lt;code&gt;VS Code&lt;/code&gt; hoặc &lt;code&gt;Cursor&lt;/code&gt;, nhấn &lt;code&gt;Cmd + Q&lt;/code&gt; để khởi động lại hoàn toàn &lt;code&gt;IDE&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Nếu dùng &lt;code&gt;tmux&lt;/code&gt;, chạy &lt;code&gt;tmux kill-server&lt;/code&gt; để đặt lại dịch vụ chạy ngầm.&lt;/li&gt;
&lt;li&gt;Kiểm tra lệnh &lt;code&gt;launchctl getenv&lt;/code&gt; và &lt;code&gt;type&lt;/code&gt; để rà soát cấp hệ thống và script bọc.&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        
    </channel>
</rss>
