在Windows上使用git和Emacs eshell模式时出现问题

时间:2009-06-17 11:10:34

标签: git emacs eshell

当我尝试在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正常工作?

5 个答案:

答案 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)

呃,eshell和git?为什么呢?

只需使用magit从emacs调用git;它比命令行界面更丰富。