当我尝试在emacs eshell模式下进行git提交时:
git commit -a -m "message"
我收到错误:
'c:\Program' is not recognized as an internal or external command, operable program or batch file.
同时在emacs shell模式中没有此问题。 如何使用git强制eshell正常工作?
答案 0 :(得分:4)
这似乎是您要执行的程序的目录名中的空格的问题;这个空白似乎没有被正确地逃脱。
例如,如果你想要执行的是“C:\ Program Files \ git \ git.exe commit ...”,那么第一个空格需要被转义,或者整个路径名用引号括起来,否则这个line将被解析为令牌“C:\ Program”,“Files \ git \ git.exe”,“...”,第一个令牌是要执行的命令。
第一种解决方法是手动扩展全名并将其括在引号中,例如:
"C:\Program Files\git\git.exe" commit ...
答案 1 :(得分:4)
有类似的问题,这是针对 magit ,(在MacOS上)。在emacs启动文件中添加以下内容:
(add-to-list 'exec-path "/usr/local/git/bin")
(setq magit-git-executable "/usr/local/git/bin/git")
答案 2 :(得分:2)
不知道具体使用git和emacs,但是对于其他应用程序,我可以在PATH中用Program Files
替换Progra~1
。
答案 3 :(得分:1)
我遇到了同样的问题,并通过更改PATH来“解决”它,使得git.exe(在c:\Program Files\Git\bin
中)出现在git.cmd之前(在c:\program files\git\cmd
,IIRC中)。
答案 4 :(得分:-2)
只需使用magit从emacs调用git;它比命令行界面更丰富。