Git Bash启动显示/c/Users/xxx是其默认Unix路径映射行为,非VSCode缺陷;需通过git-bash.exe入口、CHERE_INVOKING=1环境变量及LANG=zh_CN.UTF-8三者协同,才能正确支持Windows路径格式与中文显示。

Git Bash 启动时路径显示为 /c/Users/xxx 而不是 C:\Users\xxx
这是 Git Bash 自身行为,不是 VSCode bug。MINGW64 环境默认把 Windows 路径转成 Unix 风格(/c/ 开头),VSCode 不干预这个转换逻辑。
想让 pwd 或提示符显示 C:\Users\xxx 这种原生格式,必须靠 Git Bash 自身支持 —— 它只在特定条件下启用 Windows 路径模式:
-
CHERE_INVOKING=1环境变量是关键开关,加了它,Git Bash 才会识别自己是被外部程序(如 VSCode)调起,并启用winpty兼容层和路径映射 - 必须通过
terminal.integrated.profiles.windows配置传入,不能靠系统环境变量全局设置 -
args里加--login -i没用,路径风格由CHERE_INVOKING控制,不是 shell 参数
正确配置示例:
"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "C:/Program Files/Git/git-bash.exe",
"env": { "CHERE_INVOKING": "1" }
}
}
为什么用 bash.exe 启动后 cd c:/xxx 报错,但 git-bash.exe 可以
根本区别在于启动入口不同:bash.exe 是纯 POSIX shell,不带 Windows 路径桥接;git-bash.exe 是封装器,自动注入 winpty 和路径转换逻辑。
VSCode 调用 bash.exe 时,cd c:/xxx 会被解释成进入名为 c:xxx 的子目录(不存在),所以报 No such file or directory;而 git-bash.exe 会把 c:/xxx 映射到 /c/xxx 再执行。
必须满足以下三点才真正可用:
OpenClaw 技能 — 给定一个 GitHub 仓库 URL,自动解析出 owner/repo 名称,发现其中的 YAML/properties 配置文件及其配对的中文字段说明;在 `workspace/{repo}/` 目录下按同步日期(格式为 `YYYY-MM-DD`)创建时间戳子目录;写入 `.openclaw-config-state.json` 状态文件。每次用户提问前,先比对远程仓库当前 ref(如 `main` 或 `master`)的最新提交 SHA 与本地状态文件中记录的 SHA:
- 路径指向
git-bash.exe,不是bash.exe或sh.exe - VSCode 版本 ≥ 1.70(旧版对
git-bash.exe的 cwd 传递有缺陷) -
source字段设为"Git Bash",否则 VSCode 不启用专用适配逻辑
terminal.integrated.profiles.windows 中 path 值该写相对名还是绝对路径
取决于 Git 安装方式和 VSCode 启动上下文:
- 如果 Git 已加进系统
PATH且安装时勾选了 “Add Git Bash to PATH”,可直接写"path": "git-bash.exe" - 若用 Scoop、Chocolatey 或便携版安装,或 Git 装在非标路径(如
D:\tools\git),必须写绝对路径,例如"path": "D:/tools/git/git-bash.exe" - 路径中用正斜杠
/更安全,Windows 下反斜杠\容易因 JSON 解析出错(漏掉转义) - 不要用
${env:ProgramFiles}这类变量,VSCode 在 profiles 中不展开环境变量
中文路径下 git-bash.exe 启动失败或乱码
不是编码问题,而是 Git Bash 启动时未加载 locale 支持。VSCode 默认不传 LANG,导致 git-bash.exe 用 C locale 启动,无法处理中文路径。
解决方法是显式注入 locale 环境变量:
- 加
"LANG": "zh_CN.UTF-8"到 profile 的env字段(注意不是terminal.integrated.env.windows,那个是全局环境,对 profile 无效) - 确保 Git for Windows ≥ 2.40,旧版本的
zh_CN.UTF-8locale 可能未内置 - 如果仍乱码,检查
~/.inputrc是否禁用了 UTF-8,临时删掉它再试
典型配置:
"Git Bash": {
"path": "C:/Program Files/Git/git-bash.exe",
"env": {
"CHERE_INVOKING": "1",
"LANG": "zh_CN.UTF-8"
}
}
真正起作用的是 git-bash.exe 这个二进制入口 + CHERE_INVOKING + LANG 三者组合,缺一不可。改 settings.json 时漏掉任意一个字段,都可能让终端看起来“好像能启动”,实则路径、编码、cwd 传递全错。










