Hermes Agent Git Bash路径空格问题实操指南
在 Windows 环境下配置 Hermes Agent 时,许多开发者会在 Git Bash 的启动环节遇到障碍。问题看似细微却十分恼人——bash 无法正常启动,hermes doctor 报告找不到 Git,甚至直接进程崩溃。根本原因通常在于安装路径的缺陷:当 Git 被安装到 C:Program Files 这类包含空格的目录时,Windows 的 POSIX 兼容层在解析路径时会出现异常,加之 Hermes 源代码中路径拼接未使用引号包裹,最终导致解析链断裂。
针对该问题,存在多种修复方案。以下逐一说明具体的排查步骤与处理手段。
验证当前 Git Bash 是否受路径空格影响
在动手修改之前,先确认你的环境确实踩中了这个陷阱。打开 Git Bash 终端,执行以下命令:
which bash
观察返回的路径。如果结果是 /c/Program Files/Git/usr/bin/bash 或其他包含 Program Files 的形式——那么毫无疑问,Git 被安装在默认的含空格目录下。这条路径属于高风险路径,需要立即处理。
再执行一条命令进一步确认:
bash -c "echo hello"
如果遇到错误 bash: cannot execute binary file: Exec format error,或者没有任何输出就直接退出,即可判定:路径中的空格导致了解析失败。
方法一:将 Git 重装至无空格路径(推荐)
最彻底的解决办法是重新安装。首先彻底卸载当前版本的 Git for Windows。
前往官方网站(git-scm.com)下载最新安装包。运行安装向导,当进入“Select Destination Location”界面时——切勿直接使用默认路径,手动将安装目录改为 C:Git。后续步骤全部保持默认设置,完成安装。
安装完成后重新打开 Git Bash,再次运行 which bash。若返回 /c/Git/usr/bin/bash,说明路径中已无空格,问题已从根源解决。
方法二:利用符号链接劫持修复(适用于无法重装场景)
在某些情况下(例如公司电脑权限受限,或项目绑定特定版本),卸载重装并不现实。此时可通过符号链接“绕过”路径空格问题。
以管理员身份启动 PowerShell,执行以下命令:
mklink /J "C:Git" "C:Program FilesGit"
该命令会在 C 盘根目录创建一个名为 Git 的 Junction(接合点)。Junction 是 Windows 原生支持的符号链接类型,指向 Git 的真实安装位置。关键在于 Junction 路径本身不含空格,Git Bash 能够正确解析该链接所指向的目标,从而避开空格造成的解析障碍。
接着设置环境变量:
$env:HERMES_GIT_BASH_PATH="C:Gitusrbinbash.exe"
(在 PowerShell 中执行上述命令)
最后回到 Git Bash 验证:
hermes doctor
如果输出中出现 ✅ Git found (git version x.x.x.windows.x),则表示绕过空格路径已成功,修复完成。
方法三:强制指定 bash 路径并添加引号(临时应急)
该方案适用于紧急情况——例如正在赶 deadline 来不及调整环境时。请注意,这是临时措施,Hermes 升级后会被覆盖。
进入 Hermes Agent 的源码目录,通常位于 ~/.hermes/hermes-agent。找到 apps/desktop/electron/main.cjs 文件。
打开该文件,定位到 findGitBash() 函数。搜索所有使用 path.join(...) 拼接 bash.exe 的代码行。在每个拼接结果的起始和结束位置手动添加双引号。示例如下:
原始代码:path.join(localAppData,'hermes','git','bin','bash.exe')
修改为:""" + path.join(localAppData,'hermes','git','bin','bash.exe') + """
保存文件后重新启动 Hermes 桌面应用。该修改仅作用于当前版本,下次更新 Hermes 时会被替换,因此仅作应急使用。
