<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="https://blog.rootfly.xyz/rss.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>命令行 on Xiang's Blog</title><link>https://blog.rootfly.xyz/tags/%E5%91%BD%E4%BB%A4%E8%A1%8C/</link><description>Recent content in 命令行 on Xiang's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.rootfly.xyz/tags/%E5%91%BD%E4%BB%A4%E8%A1%8C/index.xml" rel="self" type="application/rss+xml"/><item><title>Mac 命令行环境配置备忘</title><link>https://blog.rootfly.xyz/post/mac-cli-setup/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/mac-cli-setup/</guid><description>Mac 终端环境的工具来源排查与 PATH 优先级备忘，涵盖 Git、Python/Conda、Homebrew、OrbStack 等关键组件。</description><content:encoded><![CDATA[&lt;blockquote&gt;
&lt;p&gt;目的：把 Mac 上&amp;quot;终端里能用的工具从哪来、优先级如何、怎么自查&amp;quot;整理成一份备忘。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-git&#34;&gt;1. Git&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;当前 Git&lt;/strong&gt;：&lt;code&gt;git version 2.50.1 (Apple Git-155)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可执行位置&lt;/strong&gt;：&lt;code&gt;/usr/bin/git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;来源&lt;/strong&gt;：Apple / Xcode Command Line Tools（CLT）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLT 路径&lt;/strong&gt;：&lt;code&gt;/Library/Developer/CommandLineTools&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这是&lt;strong&gt;命令行工具&lt;/strong&gt;，不是 GUI 应用，所以不会出现在「启动台」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新方式&lt;/strong&gt;：随 &lt;strong&gt;macOS / Xcode / Command Line Tools 更新&lt;/strong&gt;而更新（不是像 brew 那样单独升级）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;git --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xcode-select -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;2-python--conda&#34;&gt;2. Python / Conda&lt;/h2&gt;
&lt;p&gt;终端提示符有 &lt;code&gt;(base)&lt;/code&gt;，conda 环境只有一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conda 发行版&lt;/strong&gt;：Miniforge（以 Cask 安装）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;base 环境路径&lt;/strong&gt;：&lt;code&gt;/opt/homebrew/Caskroom/miniforge/base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;当前默认 python/pip&lt;/strong&gt;（因 PATH 优先级）：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;python&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/python&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;python3&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/python3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/pip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip3&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/pip3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统也有&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;python3&lt;/code&gt; → &lt;code&gt;/usr/bin/python3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip3&lt;/code&gt; → &lt;code&gt;/usr/bin/pip3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;但由于 conda 路径在 PATH 更前面，日常默认使用 conda 的 python/pip。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;conda&lt;/code&gt; 的状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;conda&lt;/code&gt; 在 shell 中既是一个函数（来自 &lt;code&gt;~/.zshrc&lt;/code&gt;），也有多个可执行文件路径。&lt;/li&gt;
&lt;li&gt;这是 conda 初始化脚本的常见表现。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;conda env list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a python python3 pip pip3 conda
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;3-homebrew命令行包管理器&#34;&gt;3. Homebrew（命令行包管理器）&lt;/h2&gt;
&lt;h3 id=&#34;31-手动安装的顶层包&#34;&gt;3.1 手动安装的顶层包&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;brew leaves&lt;/code&gt; 输出只有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;node&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这通常意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;真正&amp;quot;自己装来用&amp;quot;的命令行主工具基本就是 Node.js 和 tree&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew list&lt;/code&gt; 里看到的一大堆（&lt;code&gt;cairo/pango/libpng/...&lt;/code&gt; 等）多为依赖库/被间接安装的组件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;brew leaves
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew list --cask
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew uses --installed &amp;lt;包名&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;32-homebrew-是否只在-base-环境里可用&#34;&gt;3.2 Homebrew 是否&amp;quot;只在 base 环境里可用&amp;quot;？&lt;/h3&gt;
&lt;p&gt;不是。Homebrew 是系统级安装在 &lt;code&gt;/opt/homebrew&lt;/code&gt;（Apple Silicon 常见路径）。在 base 环境也能用 &lt;code&gt;brew/tree&lt;/code&gt; 的原因是：&lt;strong&gt;PATH 里包含 &lt;code&gt;/opt/homebrew/bin&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;验证命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a brew tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which brew
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda deactivate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a brew tree
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;4-orbstackdocker--kubernetes-命令来源&#34;&gt;4. OrbStack（Docker / Kubernetes 命令来源）&lt;/h2&gt;
&lt;p&gt;PATH 里有 &lt;code&gt;/Users/xiang/.orbstack/bin&lt;/code&gt;，该目录中包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker-compose&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker-credential-osxkeychain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orb&lt;/code&gt;、&lt;code&gt;orbctl&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结论：当前的 &lt;code&gt;docker&lt;/code&gt; / &lt;code&gt;kubectl&lt;/code&gt; 很可能优先来自 OrbStack（取决于 PATH 排序）。&lt;/p&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;which docker
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which kubectl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a docker kubectl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;5-path-优先级&#34;&gt;5. PATH 优先级&lt;/h2&gt;
&lt;p&gt;当前 PATH（按优先级从高到低）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin&lt;/code&gt; ← conda base 的命令（python/pip 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/condabin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/bin&lt;/code&gt; ← Homebrew 命令（brew、tree、node 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/local/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/System/Cryptexes/App/usr/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/pmk/env/global/bin&lt;/code&gt; ← 非典型来源，可能是某个环境/工具链的全局 bin&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Library/TeX/texbin&lt;/code&gt; ← TeX/LaTeX 工具链（装了 &lt;code&gt;mactex-no-gui&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Users/xiang/.orbstack/bin&lt;/code&gt; ← OrbStack 的 docker/kubectl 等&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重点记住：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;谁在 PATH 前面，谁就&amp;quot;覆盖/优先&amp;quot;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;目前：&lt;strong&gt;conda base 覆盖系统 python&lt;/strong&gt;，brew 在其后；OrbStack 在较后但仍可用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快速查看某个命令到底来自哪里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a &amp;lt;命令&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which &amp;lt;命令&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;6-与命令行相关的-gui-应用homebrew-cask&#34;&gt;6. 与命令行相关的 GUI 应用（Homebrew Cask）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;miniforge&lt;/code&gt;（决定 conda / base）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orbstack&lt;/code&gt;（提供 docker/kubectl 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mactex-no-gui&lt;/code&gt;（带来 &lt;code&gt;/Library/TeX/texbin&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;visual-studio-code&lt;/code&gt;（开发编辑器）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查看完整列表：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;brew list --cask
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;7-忘了装了啥时的推荐排查顺序&#34;&gt;7. &amp;ldquo;忘了装了啥&amp;quot;时的推荐排查顺序&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;先看 Homebrew 的&amp;quot;顶层包&amp;rdquo;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;brew leaves
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;再看 conda base 里装了什么（通常 python 相关在这里）：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;conda list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m pip list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;再看关键目录里有哪些可执行文件：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;ls -1 /opt/homebrew/bin &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 /opt/pmk/env/global/bin 2&amp;gt;/dev/null &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 ~/.orbstack/bin 2&amp;gt;/dev/null &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;定位具体某个命令：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a &amp;lt;命令&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;8-关键结论一句话版&#34;&gt;8. 关键结论一句话版&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;：Apple Git（CLT 提供，随系统/CLT 更新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;：主要来自 &lt;strong&gt;Miniforge conda base&lt;/strong&gt;（覆盖系统 python3）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brew 顶层工具&lt;/strong&gt;：只剩 &lt;code&gt;node&lt;/code&gt;、&lt;code&gt;tree&lt;/code&gt;（其余多为依赖）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker/kubectl&lt;/strong&gt;：很可能来自 &lt;strong&gt;OrbStack&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content:encoded></item><item><title>终端网络代理配置手册</title><link>https://blog.rootfly.xyz/post/terminal-proxy-setup/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/terminal-proxy-setup/</guid><description>macOS 终端默认不走系统代理，导致 Homebrew、Git 等工具连接 GitHub 极慢。本文通过三个 Zsh 别名实现一键切换终端代理状态。</description><content:encoded><![CDATA[&lt;h2 id=&#34;问题背景&#34;&gt;问题背景&lt;/h2&gt;
&lt;p&gt;macOS 的终端（Terminal / iTerm2）默认不走系统代理设置，导致 &lt;code&gt;brew install&lt;/code&gt;、&lt;code&gt;git clone&lt;/code&gt;、&lt;code&gt;curl&lt;/code&gt; 等命令行工具无法连接 GitHub 或速度极慢。&lt;/p&gt;
&lt;p&gt;解决方案很简单：在 Zsh 配置中注入几个别名，手动控制终端的代理开关。&lt;/p&gt;
&lt;h2 id=&#34;配置代码&#34;&gt;配置代码&lt;/h2&gt;
&lt;p&gt;将以下代码块添加到 &lt;code&gt;~/.zshrc&lt;/code&gt; 的&lt;strong&gt;最底部&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#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;&lt;span class=&#34;c1&#34;&gt;# =================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端代理控制 (Proxy Control)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Target: Clash Verge (Localhost: 7897)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# =================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 开启代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;proxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897; echo &amp;#34;\n✅ 终端代理已开启 (Port: 7897)&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 关闭代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;unproxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;unset https_proxy http_proxy all_proxy; echo &amp;#34;\n🚫 终端代理已关闭&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 检查当前 IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;myip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;curl -s ipinfo.io/json | grep -E &amp;#34;ip|country&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;生效步骤&#34;&gt;生效步骤&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;打开配置文件：&lt;code&gt;nano ~/.zshrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;将上述代码粘贴到文件末尾&lt;/li&gt;
&lt;li&gt;保存退出（&lt;code&gt;Ctrl+O&lt;/code&gt; → &lt;code&gt;Enter&lt;/code&gt; → &lt;code&gt;Ctrl+X&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;立即生效：&lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;命令速查&#34;&gt;命令速查&lt;/h2&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;code&gt;proxy&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;开启代理，在 &lt;code&gt;brew install&lt;/code&gt; 或 &lt;code&gt;git clone&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;code&gt;unproxy&lt;/code&gt;&lt;/td&gt;
          &lt;td&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;code&gt;myip&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;验证当前出口 IP 及国家&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;{ &amp;quot;ip&amp;quot;: &amp;quot;x.x.x.x&amp;quot;, &amp;quot;country&amp;quot;: &amp;quot;US&amp;quot; }&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;h3 id=&#34;端口变更&#34;&gt;端口变更&lt;/h3&gt;
&lt;p&gt;不同代理软件默认端口不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ClashX Pro：&lt;code&gt;7890&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Surge：&lt;code&gt;6152&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Clash Verge：&lt;code&gt;7897&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;修改方法：打开 &lt;code&gt;~/.zshrc&lt;/code&gt;，将 &lt;code&gt;alias proxy=&#39;...&#39;&lt;/code&gt; 行中所有端口号替换为你的代理端口，然后 &lt;code&gt;source ~/.zshrc&lt;/code&gt; 生效。&lt;/p&gt;
&lt;h3 id=&#34;代理开启后依然超时&#34;&gt;代理开启后依然超时&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;确认代理软件正在运行，且&amp;quot;系统代理&amp;quot;开关已打开&lt;/li&gt;
&lt;li&gt;检查代理软件设置中的&amp;quot;混合端口 (Mixed Port)&amp;ldquo;是否与配置一致&lt;/li&gt;
&lt;li&gt;执行 &lt;code&gt;myip&lt;/code&gt; 确认出口 IP 是否已变化&lt;/li&gt;
&lt;/ol&gt;
]]></content:encoded></item></channel></rss>