找不到Git可执行文件

5

我在OS X 10.6.8上使用Emacs 24。执行magit-status命令时出现以下信息:

查找程序:没有这样的文件或目录,git

然而,Emacs shell能够找到git,因此这似乎不是$PATH问题。还可能是什么原因呢?


1
Emacs shell 读取的 shell 启动文件不需要应用于 Emacs,因此它仍然可能是 $PATH 问题。在缓冲区中评估 (insert (getenv "PATH")) 以查看 Emacs 用于启动外部命令的 PATH 值。 - user4815162342
2个回答

5
尝试检查exec-path变量的值。这控制Emacs寻找外部可执行文件(包括git)的目录。
这是一个可自定义的变量,您可以将路径添加到现有目录列表中的git
我在我的.emacs.d/init.el文件中有elisp片段,用于我的OSX下的Emacs安装,正确设置了PATHexec-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/目录下的文件,否则第三方安装程序中的可执行文件将无法使用。其中一个显著的例子是MacTeX,它将可执行文件放置在/usr/texbin/目录下。 - user355252

1

在OS X上,Emacs使用系统范围的环境变量,可以通过在正确的目录中创建一个神奇的environment.plist XML文件来覆盖它们。然而,更好的解决方案是让Emacs从您的shell中复制$PATH的值,以便与您在Terminal.app中看到的匹配。

@Anupam的答案基于我最初为此目的编写的代码片段,但现在我已经改进了那段代码,并将其发布为一个名为exec-path-from-shell的小型elisp库,您可以从Marmalade或Melpa安装。


赞同从shell获取$PATH并将其打包的想法。 - user355252

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接