Skip to content

建立 2026-09-14 更新 2026-09-14

環境變數與 PATH

環境變數是傳給程式的一組鍵值。其中 PATH 最重要:它是一串目錄,用冒號分隔;你在終端機打 pythonbrew 時,系統就依這個順序找可執行檔。

先看現況

echo $PATH
echo $SHELL          # 應為 /bin/zsh
which -a brew python3 git
export               # 列出目前的環境變數

which -a 會列出所有符合的路徑。若第一個不是你想用的版本,就是 PATH 順序錯了。

PATH 在 Mac 上怎麼組出來

  1. /usr/libexec/path_helper 讀:
    • /etc/paths(系統預設,通常含 /usr/local/bin/usr/bin/bin/usr/sbin/sbin
    • /etc/paths.d/ 裡的每一個檔
  2. 登入 shell 接著讀 ~/.zprofile(Homebrew 的 brew shellenv 應該在這裡)
  3. 互動 shell 再讀 ~/.zshrc(個人 alias、nvm、prompt)

Apple Silicon 的 Homebrew 在 /opt/homebrew;Intel 在 /usr/localbrew shellenv 會設定 PATHMANPATHINFOPATHHOMEBREW_PREFIX,不要手打半套。

# Apple Silicon 常見寫法(放在 ~/.zprofile)
eval "$(/opt/homebrew/bin/brew shellenv)"

# Intel 常見寫法
eval "$(/usr/local/bin/brew shellenv)"

安裝程式結束時印在畫面上的兩行,照抄最安全。寫完後新開一個終端機視窗,再 which brew

不要只改目前這個視窗就以為永遠好了

export PATH="/opt/homebrew/bin:$PATH" 只對這個 session 有效。要持久,必須寫進 ~/.zprofile~/.zshrc

該寫在哪個檔

檔案 適合放什麼 不適合放什麼
~/.zshenv 極少數「所有 zsh 都要有」的變數 PATH(容易被 path_helper 重排)
~/.zprofile Homebrew、JAVA_HOME、登入時只要設一次的 PATH 一堆 alias(非互動腳本用不到也沒關係,但會變亂)
~/.zshrc alias、prompt、補全、nvm / pyenv 初始化 給 launchd 或 GUI App 用的變數
GUI App launchctl setenv 或該 App 自己的設定 以為改了 .zshrc,Cursor / VS Code 圖示啟動也會讀到

VS Code / Cursor 若從 Dock 點圖示啟動,不會自動讀 .zshrc。內建終端機通常會;從 Spotlight 開的 GUI 則不一定。需要讓 GUI 也看到變數時,把設定放在 ~/.zprofile,或在該軟體的設定裡指定 PATH。

常見變數

# 編輯器:git commit 會叫它
export EDITOR="nano"          # 或 vim、code --wait

# 語系
export LANG="zh_TW.UTF-8"
export LC_ALL="zh_TW.UTF-8"

# Java(路徑依實際安裝為準)
export JAVA_HOME="$(/usr/libexec/java_home)"

# 把個人腳本放進 PATH
export PATH="$HOME/bin:$PATH"

新增個人指令的乾淨做法:把腳本放到 ~/bin(或 ~/.local/bin),再把該目錄 prepend 到 PATH,而不是把一堆絕對路徑寫進 alias。

改完如何驗證

# 重新載入(或直接關掉視窗再開)
source ~/.zprofile
source ~/.zshrc

type brew
echo $PATH | tr ':' '\n'

type brew 顯示 not found

  1. 確認 Homebrew 是否真的在 /opt/homebrew/bin/brew/usr/local/bin/brew
  2. 確認 brew shellenv 寫在 ~/.zprofile 而不是只貼在聊天紀錄
  3. zsh -xl 2>&1 | grep -i brew 看有沒有讀到那一行

相關資料