在Emacs中,当使用clojure-mode
时,我应该能够使用C-c C-z
启动REPL。不过,每当我尝试时,我都会收到错误:
Searching for program: no such file or directory: lein
我lein
已安装了/usr/local/bin
(通过brew
),/usr/local/bin
位于PATH
(即使是Emacs也是如此,通过eval-expression (getenv "PATH")
})。
我错过了什么?
答案 0 :(得分:31)
啊! PATH
环境变量不是emacs搜索路径的最终全部和全部。还有“exec-path”。它显然是mostly the same thing but not exactly。
无论如何,添加:
(add-to-list 'exec-path "/usr/local/bin")
到我的.emacs.d/init.el
(或.emacs
,如果这就是你的滚动方式)为我清理了一些东西。上面链接的文档提出了一些更全面的内容,例如:
(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))
我首先尝试(更简单)add-to-list
。但是YMMV。
答案 1 :(得分:1)
我遇到了同样的问题并开始调查出了什么问题。 我很快发现我的exec-path看起来像这样(简化示例):
("/usr/local/bin /bin /sbin").
这是一个只包含一个长字符串而不是单独路径列表的列表。 我的env PATH变量看起来完全一样。显然问题来自我的外壳。
我用鱼壳。它的PATH变量分隔符只是一个空格。 我使用的exec-path-from-shell包无法解析它。 我通过将其附加到我的.emacs.d / init.el:
来修复它(setq exec-path (split-string (car exec-path)))
更新: 最后,它是一个过时的exec-path-from-shell软件包。使用1.8版。它适用于鱼(和tcsh)。