Claude Code 在 Windows 上的常見坑:Git Bash 還是 PowerShell、路徑反斜槓、假報錯、WSL 怎麼選

Windows 上用 Claude Code,裝好之後最容易踩的是:用哪個 shell、路徑寫法不一致、grep 沒匹配就報錯、鉤子沒生效、WSL 和原生怎麼選。本文逐條按官方文檔整理原因和處理辦法,附三段提示詞和一張對照表。

NNathaniel bigo··原創首發·AI 輔助撰寫
14 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 Pro 帳號
本文根據 Claude Code 官方文檔《Advanced setup》《Tools reference》《Configure permissions》《Hooks reference》《Extend Claude with skills》《Troubleshooting》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。

適用於誰

  • 已經在 Windows 上裝好 Claude Code,但碰到命令跑不起來、路徑對不上、莫名其妙的「錯誤」的人;
  • 不知道自己的 Claude 到底在用 Git Bash 還是 PowerShell 的人;
  • 在原生 Windows 和 WSL 之間猶豫的人。

安裝方式怎麼選、裝不上怎麼辦,見 /guides/claude-code-install-methods-git-npm-official 和 /guides/claude-code-install-slow-stuck-failed,本文不重複。

結論先說

  1. Claude 在 Windows 上有兩種 shell 工具:Bash 和 PowerShell。 官方說:沒裝 Git for Windows 時,命令通過 PowerShell 工具運行;裝了就用 Git Bash 作為 Bash 工具,同時 PowerShell 工具也可用(claude.ai 和 Console 帳號預設開)。
  2. 找不到 Git Bash 就告訴它在哪:在 settings.json 的 env 裏設 CLAUDE_CODE_GIT_BASH_PATH,官方示例是 C:\\Program Files\\Git\\bin\\bash.exe。
  3. 「報錯」不一定是真錯。 官方列了幾種:grep/rg 沒匹配到、git diff 有差異、where.exe 找不到、robocopy 返回 1 到 7,都會顯示 Exit code 1 之類,但命令沒有失敗。
  4. 路徑別混着寫。 權限規則裏 Windows 路徑會先轉成 POSIX 形式;鉤子收到的文件路徑卻是反斜槓,用正斜槓寫的判斷永遠匹配不上。
  5. 原生 Windows 不支持沙箱,WSL 2 支持。 這是官方對照表裏最關鍵的差別。

原生 Windows 與 WSL 對照

圖:本站根據 Claude Code 官方文檔:Advanced setup 整理的示意圖

坑一:到底用的是哪個 shell

症狀:Claude 寫的命令是 export、ls -la、&&,在你機器上報錯;或者它寫 PowerShell 語法時,又在 Bash 裏不認。

官方的機制是:

  • 沒有 Git for Windows:只有 PowerShell 工具,Claude Code 根本不註冊 Bash 工具。
  • 有 Git for Windows:Bash 工具可用;PowerShell 工具對 claude.ai 和 Console 帳號預設開啟,通過 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 使用時,要設環境變量 CLAUDE_CODE_USE_POWERSHELL_TOOL=1 才開,設為 0 則關閉。
  • PowerShell 工具開啟時,官方說 Claude 把 PowerShell 當作主要 shell,Bash 工具在裝了 Git Bash 的情況下仍可用於 POSIX 腳本。

怎麼確認?直接問它,或者看項目裏用的是哪種語法。然後在 CLAUDE.md 裏寫明約定,免得它每次猜。

提示詞 1:讓 Claude 報告當前環境並寫進 CLAUDE.md

text
請告訴我你當前能用的 shell 工具有哪些(Bash、PowerShell),各自跑在什麼環境裏。分別運行 uname 或 $PSVersionTable,確認版本。
然後在 CLAUDE.md 裏加一節「運行環境」,寫明:操作系統是 Windows;項目的命令應優先用【PowerShell / Git Bash】寫;路徑用【正斜槓 / 反斜槓】;不要使用 Linux 才有的命令(除非在 Git Bash 裏)。
先把要加的內容給我看,我同意後再寫。

還有一個容易漏的坑,官方在 PowerShell 一節寫了:**在裝了 Git Bash 的 Windows 上,一旦你給 Bash 加了拒絕規則(哪怕是 Bash(git push ) 這種帶範圍的),PowerShell 工具會被自動關閉*,因為 Bash 規則管不到 PowerShell,留着它會繞過你的規則。解決辦法:設 CLAUDE_CODE_USE_POWERSHELL_TOOL=1,或者給 PowerShell 也加一條對應的拒絕規則,如 PowerShell(git push *)。否則 PowerShell 會被悄悄關掉,沒有任何警告。

坑二:路徑

權限規則裏的路徑。 官方說明:Windows 上,路徑在匹配前會被標準化成 POSIX 形式,C:\Users\alice 變成 /c/Users/alice。所以想匹配整個 C 盤下任意位置的 .env,規則要寫 //c//.env;匹配所有盤符用 ///.env。官方示例裏 Read(./.env) 這種相對項目目錄的寫法照常使用。

鉤子收到的路徑。 官方說:Windows 上 Write、Edit、Read 的 file_path 永遠是絕對路徑,而且用反斜槓,即使鉤子跑在 Git Bash 裏。你的腳本里如果用 /src/ 這種正斜槓判斷,永遠匹配不上,鉤子等於沒寫,調用照常放行。官方的修法:先把反斜槓換成正斜槓,在 Bash 裏是 FILE_PATH="${FILE_PATH//\\//}",在 Python 裏是 file_path.replace("\\", "/"),再匹配 /src/ 這樣的路徑片段。

網絡路徑。 官方說,命令參數裏帶 UNC 路徑(\\server\share\file)會彈權限提示,因為訪問網絡路徑可能把你的 Windows 憑據發給目標主機;讀文件工具讀網絡路徑也要單獨檢查,而且這類路徑不能直接加成工作目錄。官方的辦法:把共享映射成盤符,再用 --add-dir 加,例如共享映射為 Z:,在 PowerShell 裏運行 claude --add-dir Z:\。

坑三:不是錯誤的「錯誤」

官方在 PowerShell 一節列了這些情況,都顯示 Error: Exit code 1,但命令沒失敗,你什麼都不用做:

  • grep、rg、findstr、git grep 沒找到匹配(它們用退出碼 1 表示沒匹配);
  • git diff 發現有差異(退出碼 1 表示有不同);
  • where.exe 沒找到、fc.exe、diff.exe 發現文件不同;
  • robocopy 返回 1 到 7(官方說 0 到 7 都是在彙報結果,8 以上才是失敗)。

官方還說,當這類搜尋在更長的命令裏(例如 rg foo | Out-Null)時更容易冒出這個提示。把這個知識交給 Claude,它就不會在「沒匹配」時瞎找原因。

提示詞 2:解釋一段看起來像報錯的輸出

text
下面這段命令輸出裏出現了 Error: Exit code 1。請判斷它是真的失敗,還是隻是「沒有匹配」或「文件不同」這類正常的退出碼:
【粘貼命令和輸出】
說明你判斷的依據;如果是真錯,給出下一步排查命令,先不要修改任何文件。

坑四:腳本、技能和鉤子裏的 shell

  • 鉤子:每個命令類鉤子可以加 "shell": "powershell",直接用 PowerShell 運行,不依賴 PowerShell 工具開關;沒裝 Git Bash 時,鉤子預設用 PowerShell,Bash 寫的腳本可能失敗。官方的修法是裝 Git for Windows,或設 CLAUDE_CODE_GIT_BASH_PATH,然後開新會話。
  • 鉤子匹配:要攔截 shell 命令,matcher 寫 Bash|PowerShell,只寫 Bash 不夠。
  • 鉤子引用腳本:PowerShell 裏引用項目目錄寫 ${CLAUDE_PROJECT_DIR} 或 $env:CLAUDE_PROJECT_DIR,不要寫 $CLAUDE_PROJECT_DIR,那會被解析成空變量。
  • npm、npx 這類 .cmd 文件:官方說,exec 形式的鉤子需要指向真正的可執行文件(.exe),npm、npx、eslint 等在 node_modules/.bin 裏裝的 .cmd、.bat 墊片不是可執行文件,沒有 shell 就啟動不了。
  • 技能裏的預執行命令:frontmatter 裏寫 shell: powershell 可以讓它們在 PowerShell 裏運行,要求 PowerShell 工具已開啟;寫死 shell: bash 而電腦沒有 Git Bash,調用會直接失敗。

鉤子的完整例子見 /guides/claude-code-hooks-run-tests-before-commit,基礎見 /guides/claude-code-hooks。

坑五:執行策略、編碼和環境變量

  • 執行策略。官方說,PowerShell 工具會用 -ExecutionPolicy Bypass 啟動,僅作用於該進程,所以 .ps1 腳本在預設 Windows 上也能運行,但不會覆蓋組策略;想遵守機器的有效策略,設 CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1。
  • 編碼。官方說,PowerShell 5.1 裏用 > 和 >> 重定向寫出的是 UTF-8 文件,Claude Code 往原生命令標準輸入傳的文本也是 UTF-8。
  • 環境變量不跨命令保留。官方說,Bash 工具裏一條命令的 export 在下一條命令裏沒有;想持久化,設 CLAUDE_ENV_FILE 指向一個腳本,或用 SessionStart 鉤子。工作目錄則會保留,只要還在項目目錄或你用 --add-dir 加的目錄內。
  • 不加載配置文件。官方的已知限制:PowerShell 工具不會加載 PowerShell 的 profile,你在 profile 裏設的別名和變量它看不到。

坑六:原生還是 WSL

官方把三種方式擺在一張表裏:

  • 原生 Windows:不需要任何前置;Git for Windows 可選;不支持沙箱;適合 Windows 原生的項目和工具。
  • WSL 2:需要先啟用 WSL 2;支持沙箱;適合 Linux 工具鏈,或需要沙箱化執行命令的場景。
  • WSL 1:需要啟用 WSL 1;不支持沙箱;WSL 2 用不了時才考慮。

WSL 裏有兩點要注意:一是官方排錯說,跨文件系統訪問有讀盤性能損失,可能導致搜尋匹配比預期少,建議項目放在 Linux 文件系統(/home/),而不是 /mnt/c/;二是官方 Chrome 集成文檔寫明,不支持 WSL。沙箱的說明見 /guides/claude-code-sandbox-security。

Windows 上症狀與處理對照

圖:本站根據官方文檔整理的示意圖

一次排查流程

提示詞 3:新項目的 Windows 自檢

text
請檢查這個項目在我的 Windows 環境裏能不能正常工作:
1)列出 package.json 或腳本里用到的所有命令,標出哪些在 PowerShell 裏不能直接用(比如 rm -rf、export、&&);
2)檢查是否有硬編碼的 Linux 路徑(如 /tmp、/usr/);
3)檢查換行符設定,倉庫裏有沒有 .gitattributes,腳本文件是否會被轉成 CRLF 而在 Git Bash 裏出錯;
4)給出修改建議,用跨平台的寫法(Node 腳本或 npm 包)替代,先不要改文件。

第 3 條是通用的 Windows 開發常識,官方文檔沒有專門寫。

常見問題

Q:不裝 Git for Windows 行不行?

行,官方說它是可選的,沒裝時 Claude 用 PowerShell。裝了可以用 Bash 工具,對只會 Bash 寫法的腳本更方便。

Q:以管理員身份運行 Claude Code?

官方說明安裝不需要管理員權限。是否以管理員運行,官方文檔沒有推薦,建議不要。

訂閱和額度

環境問題多半靠讀取少量配置就能解決,用不了多少額度。訂閱選擇見 /chongzhi/claude-code,價格和額度以官方頁面當前顯示為準。

相關教學

參考資料

  • Claude Code 文檔:Advanced setup — https://code.claude.com/docs/en/setup
  • Claude Code 文檔:Tools reference — https://code.claude.com/docs/en/tools-reference
  • Claude Code 文檔:Configure permissions — https://code.claude.com/docs/en/permissions
  • Claude Code 文檔:Hooks reference — https://code.claude.com/docs/en/hooks
  • Claude Code 文檔:Extend Claude with skills — https://code.claude.com/docs/en/skills
  • Claude Code 文檔:Troubleshooting — https://code.claude.com/docs/en/troubleshooting

Nathaniel 的更多內容

  1. 01

    Claude Code Hooks 實戰「提交前自動跑測試」:PreToolUse 攔住 git commit,測試不過就退出碼 2,附 Windows 注意點

    只寫一個完整例子:讓 Claude Code 每次要執行 git commit 之前,先自動跑項目測試,沒通過就攔下並把輸出交給它修。本文按官方 Hooks 文檔給出腳本、settings.json 配置、測試方法、排錯和 Windows 的兩處坑。

    Claude0
  2. 02

    Claude Code 自定義斜槓命令與 Skill 實戰:從零寫一個「生成更新日誌」的 /release-notes,含傳參、預執行命令和調試

    概念看過了,還是不知道從哪下手?本文按 Claude Code 官方「Extend Claude with skills」寫一個完整可用的例子:用 /release-notes 根據 git 記錄生成更新日誌,覆蓋目錄、frontmatter、傳參、預執行命令、預授權和調試。

    Claude0
  3. 03

    Claude Code 部署網站:先寫 Dockerfile 和 compose 在本機跑通,再按清單上雲伺服器,別讓它直接改線上

    想讓 Claude Code 幫你把網站部署到雲伺服器。本文只寫通用做法,按 Docker 官方文檔講:讓它寫 Dockerfile、.dockerignore 和 compose,在本機跑通,端口和數據卷怎麼設,再給出上線清單,並說明為什麼不要讓它直接動線上機器。

    Claude0
  4. 04

    Claude Code 寫爬蟲與數據清洗:先查 robots.txt 和網站條款,控制頻率,原始數據留一份再清洗

    想讓 Claude Code 寫爬蟲抓數據再清洗。本文先講合規:robots.txt 不是授權也不是安全措施、網站條款要自己讀;再講怎麼用 Python 標準庫檢查規則、小樣本先試、儲存原始數據,以及用 pandas 清洗,附四段提示詞。

    Claude0
  5. 05

    Claude Code 寫 Chrome 擴展:按 Manifest V3 起步,加載未打包的擴展,改了哪些文件要重新加載

    想讓 Claude Code 幫你寫一個 Chrome 擴展。本文按 Chrome 官方擴展文檔講:manifest.json 的最小寫法、在 chrome://extensions 加載未打包的擴展、哪些改動要刷新、怎麼看控制檯和報錯,再給四段提示詞,以及權限要盡量少。

    Claude0
  6. 06

    Claude Code 寫安卓 App:Android Studio 建項目、讓它用 gradlew 編譯安裝,報錯和日誌怎麼餵給它

    想讓 Claude Code 幫你寫安卓 App。官方文檔沒有專門的安卓教學,本文把 Claude Code 官方工作流和安卓官方命令行文檔拼在一起:Android Studio 建項目、gradlew 編譯安裝、模擬器和真機、測試與日誌,附四段提示詞。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 用數據庫 MCP 查數據、出報表:只讀帳號、先看口徑再看數字,結果別一次拉太多行

    想用自然語言讓 Claude Code 查數據庫、出統計報表,而不是寫後端接口。本文按官方 MCP 頁面和 DBHub 說明講:怎麼連 PostgreSQL、MySQL、SQLite、輸出太大怎麼辦、怎麼讓它先說明口徑、怎麼核對數字,附三段提示詞。

    Claude0
  2. 02

    Claude Code 配 Figma MCP 還原設計稿:插件或一條命令安裝,複製圖層連結,小塊小塊地讓它出代碼

    想讓 Claude Code 照 Figma 設計稿寫前端代碼。本文按 Figma 官方開發者文檔講:遠程伺服器地址、插件和手動兩種安裝、怎麼複製圖層連結、為什麼要選小塊、座位類型與調用次數限制,並給三段還原設計稿的提示詞。

    Claude0
  3. 03

    Claude Code 管理 GitHub issue:用 gh 命令還是 GitHub MCP,怎麼裝、怎麼限權、怎麼讓它分揀和回覆 issue

    讓 Claude Code 讀 issue、分揀標籤、起草回覆、關聯 PR,有兩條路:裝好 gh 命令行直接用,或連 GitHub 官方 MCP 伺服器。本文按兩邊官方文檔講安裝命令、令牌權限、只讀模式,並給出三段分揀提示詞和限權設定。

    Claude0
  4. 04

    Claude Code 配 Playwright MCP 做瀏覽器測試:一條命令安裝,讓它打開頁面、點按鈕、讀控制檯,再把流程寫成測試

    想讓 Claude Code 自己打開瀏覽器測試你的網頁。本文按微軟 Playwright MCP 官方倉庫和 Claude Code 官方 MCP 文檔講:安裝命令、怎麼確認連上、有頭無頭與隔離參數、一次測試的提示詞,以及它不是安全邊界這件事。

    Claude0
  5. 05

    Claude Code 寫文檔、README 和代碼註釋:先讓它讀代碼再動筆,指定風格,寫完逐條核對命令能不能跑

    想讓 Claude Code 給項目補 README、接口文檔和註釋,又怕它編造不存在的命令和參數。本文按官方「Handle documentation」工作流講:先找沒有文檔的代碼、指定風格、寫完核對,附四段可複製提示詞和驗證辦法。

    Claude0
  6. 06

    用 Claude Code 整理電腦文件、批量重命名、處理表格:先出清單再執行,副本操作和權限設定

    Claude Code 不只能寫代碼,官方說它能在任何文件夾裏搜尋、編輯和整理內容。本文講非程式員怎麼用它整理下載文件夾、批量重命名、處理表格:先出整理清單、用副本操作、權限怎麼設,附四段提示詞和撤銷辦法。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~