要点速览
终端机基础只有四个核心观念:路径是文件的地址,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。留言前请先看社区规则。