我在OS X 10.6.8上使用Emacs 24。这样做magit-status
说找不到git可执行文件
搜索程序:没有这样的文件或目录,Git会
然而,Emacs的外壳能够找到git
,所以这似乎并不成为一个问题$PATH
。它还能是什么?
我在OS X 10.6.8上使用Emacs 24。这样做magit-status
说找不到git可执行文件
搜索程序:没有这样的文件或目录,Git会
然而,Emacs的外壳能够找到git
,所以这似乎并不成为一个问题$PATH
。它还能是什么?
尝试检查exec-path
变量的值。这控制着Emacs为外部可执行文件(包括git)查看的目录。
这是一个可定制的变量,您可以将路径添加到git
到现有目录列表中。
我在我的.emacs.d/init.el
文件中有一个elisp片段,用于在OSX下的Emacs安装,它将PATH
和exec-path
正确设置。
;;; Set localized PATH for OS X
(defun my-add-path (path-element)
"Add the specified PATH-ELEMENT to the Emacs PATH."
(interactive "DEnter directory to be added to path: ")
(if (file-directory-p path-element)
(progn
(setenv "PATH" (concat (expand-file-name path-element) path-separator (getenv "PATH")))
(add-to-list 'exec-path (expand-file-name path-element)))))
(if (fboundp 'my-add-path)
(let ((my-paths (list "/opt/local/bin" "/usr/local/bin" "/usr/local/git/bin")))
(dolist (path-to-add my-paths (getenv "PATH"))
(my-add-path path-to-add))))
您还需要解析'/ etc/path.d /'下的文件,否则第三方安装程序的可执行文件将不可用。突出的例子是将可执行文件放入'/ usr/texbin /'中的MacTeX。 – lunaryorn
在OS X Emacs使用全系统的环境变量,它们可以通过在合适的目录魔environment.plist
XML文件被覆盖。不过,更好的解决方案是让Emacs从您的shell中复制$PATH
的值,以便它与您在Terminal.app
中看到的相符。
@阿努邦的答案是基于我最初写这个目的的代码片段,但现在我已经改进的代码,并将其发布为little elisp library called exec-path-from-shell
您可以从果酱或Melpa安装。
+1,用于从shell获取'$ PATH'并将此想法放入一个包中。 – lunaryorn
emacs shell读取不需要应用于Emacs的shell启动文件,所以它可能仍然是'$ PATH'问题。在缓冲区中评估'(insert(getenv“PATH”))'以查看Emacs用来启动外部命令的'PATH'的值。 – user4815162342