重點速覽
終端機基礎只有四個核心觀念:路徑是檔案的地址,cd 用來切換目前所在的資料夾,環境變數是給程式讀取的設定值,PATH 則是一份讓終端機尋找程式的資料夾清單。照著 AI 教學打指令卻失敗時,多數是因為你不在對的資料夾,或程式的安裝位置不在 PATH 裡。
終端機基礎的目標很簡單:讓你看懂 AI 教學裡那幾行「打開終端機,輸入以下指令」到底在做什麼。不管是安裝 Claude Code 這類 AI 代理、執行 Python 程式,還是設定 API 金鑰,都會用到同一組觀念:路徑、cd、環境變數和 PATH。這篇不教特定工具的安裝,而是把這四個觀念講清楚,並附上 Windows 和 Mac 的指令對照。
終端機、殼層、指令列介面是什麼?
終端機(Terminal)是讓你用鍵盤輸入文字指令、並以文字顯示結果的視窗程式。Windows 有 Windows Terminal,Mac 內建「終端機」App。
真正讀懂並執行你輸入的指令的,是在終端機裡執行的殼層(Shell)。Windows 常見的殼層是 PowerShell 和命令提示字元,Mac 常見的是 zsh。Microsoft 的文件就把 Windows Terminal 描述為「命令列殼層的宿主程式」:終端機負責畫面,殼層負責解讀指令。
用文字指令操作的程式介面,稱為指令列介面(CLI,Command-Line Interface)。很多 AI 工具都是 CLI 程式,所以要先會用終端機。
本文的 Windows 範例以 PowerShell 為準,Mac 範例以 zsh 為準。命令提示字元的寫法不同,不適用本文的 Windows 指令。
路徑:檔案在電腦裡的地址
路徑(Path)是一個檔案或資料夾在電腦裡的位置寫法,由一層層的資料夾名稱組成。
- Windows 用反斜線
\分隔,從磁碟機代號開始,例如C:\Users\你的名字\Documents\notes.txt。 - Mac 用斜線
/分隔,從最上層的/開始,例如/Users/你的名字/Documents/notes.txt。
路徑分成兩種:
- 絕對路徑:從最上層一路寫到目標,不管你現在在哪裡,指的都是同一個地方。
- 相對路徑:從「你現在所在的資料夾」出發去寫,例如
Documents\notes.txt(Windows)或Documents/notes.txt(Mac)。
兩個特殊符號在兩邊都通用:. 代表目前所在的資料夾,.. 代表上一層資料夾。Microsoft 的文件舉例:如果你在 C:\Windows,相對路徑 ..\Program Files 就會解析成 C:\Program Files。
另一個常見的起點是家目錄(Home directory),也就是每個使用者自己的資料夾。PowerShell 用 $HOME 代表它,在 Windows 上通常是 C:\Users\你的使用者名稱;zsh 則用 ~ 代表家目錄,~/Documents 就是家目錄底下的 Documents。
路徑裡有空格時,要用引號把整個路徑包起來,例如 cd "C:\Program Files",否則殼層會把空格後面的部分當成另一個東西。
目前所在的資料夾與 cd
目前所在的資料夾(也稱工作目錄,Working directory)是你沒有寫出完整路徑時,指令預設會去作用的位置。Microsoft 的文件把它稱為「目前的工作位置」:只要你沒有明確指定路徑,所有指令都會從這裡出發。
這就是 AI 教學老是叫你「先 cd 到專案資料夾」的原因。像 npm install 或 python main.py 這類指令,會在目前所在的資料夾裡找檔案;站錯資料夾,就會出現「找不到檔案」或把東西裝到錯的地方。
cd(change directory)就是切換目前所在資料夾的指令:
- 在 zsh 裡,
cd後面接路徑就切換過去;不加任何東西,直接回到家目錄;cd -回到上一個待過的資料夾。 - 在 PowerShell 裡,
cd是Set-Location的內建別名,所以cd 路徑一樣能用。
想知道自己現在在哪裡:PowerShell 用 Get-Location,zsh 用 pwd。
環境變數:給程式讀取的設定值
環境變數(Environment variable)是存在作業系統環境裡、讓程式在執行時讀取的「名稱=值」設定,例如程式要用的 API 金鑰、安裝位置、偏好設定。
三個特性一定要知道:
- 它一律是文字。Microsoft 的文件說明,環境變數不同於一般變數,永遠以字串儲存。
- 它會傳給子程式。從這個終端機啟動的程式,會繼承終端機當下的環境變數。所以在終端機裡設定好金鑰,再從同一個視窗啟動的工具就讀得到。
- 在終端機裡直接設定,只在這個工作階段有效。Microsoft 的文件明確指出,在 PowerShell 裡修改環境變數只影響目前的工作階段;關掉視窗就沒了。
另外,名稱的大小寫規則不同:Windows 的環境變數名稱不分大小寫,macOS 和 Linux 則會區分,PATH 和 Path 在 Mac 上是兩個不同的變數。
暫時設定 vs 永久設定
| Windows(PowerShell) | Mac(zsh) | |
|---|---|---|
| 看某個變數的值 | $Env:變數名稱 | echo $變數名稱 |
| 暫時設定(只在這個視窗有效) | $Env:MY_VAR = '值' | export MY_VAR='值' |
| 永久設定的常見做法 | 寫進 PowerShell 設定檔,或設在「使用者」層級的環境變數 | 寫進家目錄的 .zshrc |
永久設定的原理是:讓設定在每次開新的殼層時自動套用。zsh 的官方手冊說明,互動式的 zsh 啟動時會讀取家目錄裡的 .zshrc;Windows 則可以把變數設在「使用者」或「系統」層級,系統會把它保存下來,重新開機後仍然存在。不管哪一種,已經開著的終端機視窗不會自動讀到新設定,要開一個新的視窗。
PATH:終端機去哪裡找程式
PATH 是一個特殊的環境變數,內容是一串資料夾清單;你只打程式名稱(例如 python、node、git)時,殼層就依序到這些資料夾裡找同名的程式。
- Windows 的 PATH 用分號
;分隔每個資料夾。 - Mac 的 PATH 用冒號
:分隔。
幾個由此推出的重要觀念:
- 安裝了,不代表找得到。 如果程式的安裝資料夾不在 PATH 裡,你就只能打完整路徑才能執行它。很多安裝程式會幫你把資料夾加進 PATH,但已經開著的終端機視窗不會知道,所以「裝完重開終端機」是最常見的第一步。
- 找到第一個就停。 如果不同資料夾裡有同名的程式,排在前面的會被執行。zsh 的
which只會列出第一個找到的;加上-a可以列出所有找得到的位置。PowerShell 的Get-Command 程式名稱會顯示實際會執行的那一個,以及它的來源路徑。 - 目前所在的資料夾裡的程式,要特別標明。 Microsoft 的文件指出,基於安全考量,PowerShell 不會只憑名稱執行不在 PATH 裡的程式;要執行目前資料夾裡的腳本,要寫成
.\script.ps1。zsh 也一樣,目前的資料夾不在 PATH 裡時,要寫成./script.sh。
修改 PATH 時,要保留原本的清單,只把新資料夾加在前面或後面,不要整串覆蓋。加在前面的資料夾會被優先搜尋,加在後面的則排在最後。Microsoft 文件裡的範例就是用「加上」的寫法:
# Windows PowerShell:在目前的 PATH 後面加上一個資料夾(只在這個視窗有效)
$Env:PATH += ';C:\Tools'
# Mac zsh:在目前的 PATH 前面加上一個資料夾(只在這個視窗有效)
export PATH="$HOME/tools:$PATH"
把同一行寫進 PowerShell 設定檔或 .zshrc,之後每個新視窗都會自動套用。
Windows 與 Mac 指令對照表
| 想做的事 | Windows(PowerShell) | Mac(zsh) |
|---|---|---|
| 看目前在哪個資料夾 | Get-Location | pwd |
| 切換資料夾 | cd 路徑(Set-Location 的別名) | cd 路徑 |
| 回到上一層 | cd .. | cd .. |
| 回到家目錄 | cd $HOME | cd 或 cd ~ |
| 列出資料夾內容 | ls 或 dir(Get-ChildItem 的別名) | ls |
| 看 PATH | $Env:PATH | echo $PATH |
| 暫時設定環境變數 | $Env:MY_VAR = '值' | export MY_VAR='值' |
| 確認會執行哪個程式 | Get-Command python | which python(加 -a 看全部) |
| 執行目前資料夾裡的腳本 | .\script.ps1 | ./script.sh |
| 路徑分隔符號 | \ | / |
| PATH 分隔符號 | ; | : |
照著 AI 教學卻失敗時的判斷方法
下面是本站整理的檢查順序,不是官方標準:
| 你看到的狀況 | 先檢查什麼 |
|---|---|
| 找不到指令(command not found、無法辨識) | 剛裝完?先重開終端機。再用 Get-Command 或 which 確認找不找得到 |
| 找不到檔案或 package.json 之類的設定檔 | 用 Get-Location 或 pwd 確認是否在對的專案資料夾 |
| 執行到的版本和你剛裝的不一樣 | PATH 裡可能有另一個同名程式排在前面;用 which -a 或 Get-Command 查來源路徑 |
| 程式說讀不到 API 金鑰 | 環境變數是不是設在另一個視窗?是不是設定後才開的視窗?名稱大小寫對不對 |
| 路徑有空格就出錯 | 用引號把整個路徑包起來 |
| Mac 教學的指令在 Windows 不能用 | 改成 PowerShell 的寫法,特別是環境變數與 PATH 分隔符號 |
安全提醒:終端機裡的設定,代理也看得到
因為環境變數會傳給從終端機啟動的程式,你在終端機裡設定的 API 金鑰,從同一個視窗啟動的 AI 代理也讀得到。這是方便,也是風險:
- 金鑰怎麼放、外洩了怎麼辦,請看 API Key 是什麼,以及怎麼安全保管。
- 讓代理在你的電腦上執行指令前,先讀 讓 AI 代理安全操作電腦,特別是「只在需要的專案資料夾裡啟動代理」這一點:代理的「目前所在的資料夾」,就是它預設會動手的地方。
接著看什麼
常見問題
終端機、命令提示字元和 PowerShell 有什麼不同?
終端機是顯示文字、讓你輸入指令的視窗程式;命令提示字元和 PowerShell 是在裡面解讀指令的殼層。Microsoft 的文件把 Windows Terminal 描述為這些殼層的「宿主程式」。兩種殼層的寫法不同,本文的 Windows 指令以 PowerShell 為準。
為什麼程式明明裝好了,終端機還是說找不到指令?
最常見的原因有兩個:程式的安裝資料夾不在 PATH 裡,或是你在安裝前就開著的終端機視窗還沒讀到新的設定。先關掉視窗重開一個,再用 Get-Command(Windows)或 which(Mac)確認終端機找不找得到它。
在終端機裡設定的環境變數,為什麼關掉視窗就不見了?
因為那樣設定只會影響目前這個終端機工作階段。要讓它一直存在,Windows 要寫進使用者或系統層級的設定(或 PowerShell 的設定檔),Mac 的 zsh 則通常寫進家目錄的 .zshrc。
不小心把 PATH 改壞了怎麼辦?
如果只是在終端機裡暫時改的,關掉視窗再開一個新的就會恢復。永久修改之前,先把原本的 PATH 內容複製下來備份,並且用「保留原本內容、只加上新資料夾」的方式修改,而不是整串覆蓋。
路徑裡有空格要怎麼打?
用引號把整個路徑包起來,例如 cd "C:\Program Files" 或 cd "/Users/你的名字/My Projects"。沒有加引號時,殼層會把空格當成分隔,以為你輸入了兩個不同的東西。
Mac 教學裡的指令可以直接在 Windows 用嗎?
部分可以。PowerShell 內建了 cd、ls 這類別名,所以切換資料夾、列出檔案的寫法很像;但設定環境變數的寫法、路徑的斜線方向、PATH 的分隔符號都不一樣。Mac 的 export 指令在 PowerShell 裡要改寫成 $Env:名稱 = '值'。
留言
用 GitHub 帳號登入就能留言,留言會公開顯示在 GitHub Discussions。留言前請先看社群規則。