我现在使用 git bash 时遇到了这个问题:
C:\>bash -c pwd
C:\Program Files\Git\bin\bash.exe: line 1: $'MZ\220\003': command not found
/c
当我使用调试选项时,我得到了以下信息:
C:\>bash -x -c pwd
+ $'MZ\220\003'
C:\Program Files\Git\bin\bash.exe: line 1: $'MZ\220\003': command not found
+ pwd
/c
是什么原因导致这个附加$'MZ\220\003'
命令被执行?
这是我的情况:
- 从以下位置安装 git bashhttps://git-scm.com/download/win
- 将“C:\Program Files\Git\bin”添加到我的路径中,位于“Windows\System32”上方,以覆盖其中的 bash
- 我可以确认我的 cmd 会话中的 bash 使用的是 git 版本
- 我看不到任何可以添加到此命令中的 .bashrc、.profile 或 .bash_login 条目
- 我有另一台具有相同设置的独立 Windows 机器,该命令在那里运行良好
答案1
问题已解决。不确定这是否会对其他人有用,但我会发布我的发现。
在我的 Windows 环境变量中,我错误地将 BASH_ENV 设置为我正在使用的 bash exe 的路径 (C:\Program files\Git\bin\bash.exe)。所以我认为发生的事情是:
bash -c pwd
我在 cmd 中运行命令- cmd 找到 git bash exe
- git bash exe 运行并尝试从 BASH_ENV 加载变量
- 它找到一条通往自身的路径并尝试运行它?
MZ* .exe
奇怪的是,在出错之前,它实际上尝试在多个不同的目录中查找可执行文件。 Proc mon 显示:
同时探测环境,bash exe 显示:
_=$$'MZ\220\003'
不确定这里的内部工作原理,但最终删除该环境变量解决了我的问题,我终于可以正常使用它了(唷……)