Claude Code 的 Shell 工具因中文参数导致 Exit Code 127,求解决方案

问题描述

我在 Windows 11 环境下使用 Claude Code(版本 2.1.201),通过 Git Bash 执行 Shell 命令时,凡是包含中文字符的内联参数 都会失败,返回 Exit code 127 和 No such file or directory 错误。

示例:

bash 复制代码
echo "测试中文"          # Exit code 127
git commit -m "更新"    # Exit code 127
curl -d '{"text":"你好"}' # Exit code 127

但以下情况全部正常:

  • 纯英文命令:echo "test"
  • 命令输出包含中文(非参数):date 输出 2026年07月 4日
  • 读取包含中文内容的文件:cat data.json
  • 执行包含中文的脚本文件:bash script.sh

环境信息

项目 信息
操作系统 Windows 11 Home China
Shell Git Bash (MINGW64 2.11.2, GNU bash 4.4.23)
Claude Code 版本 2.1.201
终端 Windows Terminal

完整报错信息

最简单的复现方式:

bash 复制代码
● Bash(echo "测试")
  ⎿  Error: Exit code 127
     /usr/bin/bash: export TEMP='C:\Users\username\AppData\Local\Temp' TMP='C:\Users\username\AppData\Local\Temp' && shopt -u extglob 2>/dev/null || true && eval 'echo "测试"' < /dev/null && pwd -P >|
     /c/Users/username/AppData/Local/Temp/claude-c4a6-cwd: No such file or directory

可以看到,Claude Code 将命令包装成:

bash 复制代码
export TEMP=... TMP=... && shopt -u extglob 2>/dev/null || true && eval 'echo "测试"' < /dev/null && pwd -P >| /c/Users/username/AppData/Local/Temp/claude-xxx-cwd

关键观察:

  • eval 'echo "测试"' 本身语法正确,Bash 可以解析。
  • 报错在最后一步:pwd -P >| /c/Users/username/AppData/Local/Temp/claude-xxx-cwd: No such file or directory
  • 这是 Claude Code 在执行完用户命令后,尝试将当前工作目录写入临时文件时失败。
  • 但仅当用户命令中包含中文内联参数时才触发此问题,纯英文命令不会。

已尝试的排查

  1. 确认不是 Git Bash 本身的问题 :直接在 Git Bash 终端中执行 echo "测试中文",输出完全正常。
  2. 确认临时目录可读写 :/c/Users/username/AppData/Local/Temp/ 目录访问正常,文件读写无权限问题。
  3. 更新 Claude Code 到最新版本 :已运行 claude update,问题依旧。

临时解决方案(已确认有效)

通过 /memory 设置全局规则,强制 Claude Code 将含中文的操作写入脚本文件再执行:

步骤:

  1. 在 Claude Code 对话中输入 /memory
  2. 将以下规则粘贴到 ~/.claude/CLAUDE.md 中并保存:
markdown 复制代码
# Shell 工具规则(Windows)------临时绕过方案
禁止在 Shell 参数中直接写中文。  
改用 Write 写脚本到临时目录后再执行:

- `.sh` / `.py` → Write `$TEMP/script.sh`,执行 `bash $TEMP/script.sh`
- `.bat` / `.ps1` → Write `%TEMP%\script.bat`,执行 `cmd /c "%TEMP%\script.bat"`
  1. 重启 Claude Code

效果示例:

原来(报错) 现在(可行)
echo "测试" Write $TEMP/test.sh → bash $TEMP/test.sh
git commit -m "更新" Write %TEMP%\msg.txt → git commit -F %TEMP%\msg.txt
curl -d '{"text":"你好"}' Write %TEMP%\data.json → curl -d @%TEMP%\data.json

路径简写说明:

  • $TEMP(Git Bash 中)→ /c/Users/username/AppData/Local/Temp/
  • %TEMP%(cmd 中)→ C:\Users\username\AppData\Local\Temp\

关键发现

  • 执行脚本文件可以绕过此问题 :将含中文的命令写入 .sh 脚本文件,再通过 bash script.sh 执行,可以正常工作。以上临时方案正是基于此原理。
  • 问题仅发生在 Claude Code 的 Bash 工具通过 eval 直接传递内联参数 的场景。
  • 官方 Issue #31295 描述了类似问题,但已被关闭为 "not planned"。
  • 对比验证 :我用 Hermes Chat (另一个 AI 编程助手)在相同环境下执行 echo "测试中文",可以正常执行并输出中文。这进一步说明问题不在 Git Bash 或系统环境,而在于 Claude Code 自身的参数传递层。

求助

如何解决这个问题?我看别人的新版本没有这个问题。

相关推荐
aiks_yuan14 小时前
如何降低 Claude Code 使用费用:同一个 Java 修 bug 任务实测 6 种设置,花费从 0.69 到 0.02 美元
claude
ZzT18 小时前
AI-SDLC 实践 00|让 Coding Agent 参与整个项目周期:AI-SDLC 是什么、为什么要做
ai编程·claude
jerrywus20 小时前
你还在手动seo? 那你可以试试claude-seo skill
agent·claude·seo
一缕82年的清风21 小时前
智能体“自主决策”的虚假繁荣:当 Claude 5.5 与 GPT-6.1 深入生产,为什么顶级架构师都在重回“确定性状态机”?
gpt·claude
重生之我在番茄自学网安拯救世界2 天前
AI开发者日报 第2期 | Anthropic零 Rust 团队靠Claude重写核心 API,CPU 降 40–50%
人工智能·网络安全·大模型·ai编程·claude
一缕82年的清风2 天前
算力平民化神话破产:当推理成本暴降 90%,为什么生产级 Agentic 架构反而更贵更脆弱了?
gpt·claude
灵感__idea2 天前
Claude Code:能干活只是初级目标,再提10倍
ai编程·claude·cursor
AnxiangLemon2 天前
Warp Lite :一个专注本地使用的开源终端
终端·shell·warp·warp lite
jerrywus4 天前
Skill、MCP、Workflow、Rules、Memory 有什么区别?拿几次真实开发任务讲清楚
前端·agent·claude