【发布时间】:2013-12-27 13:34:37
【问题描述】:
我在 mac os x 10.9 上运行 emacs 24.3。我已经为 ocaml 编程安装了 tuareg 模式,但无法使用命令 C-c C-b 进行编译。在按下相同的按钮时,迷你缓冲区会询问我“要运行的 Caml 顶层:ocaml”。当我按下回车键时,它显示错误“正在搜索程序:没有这样的文件或目录,ocaml”。我错过了什么?
【问题讨论】:
我在 mac os x 10.9 上运行 emacs 24.3。我已经为 ocaml 编程安装了 tuareg 模式,但无法使用命令 C-c C-b 进行编译。在按下相同的按钮时,迷你缓冲区会询问我“要运行的 Caml 顶层:ocaml”。当我按下回车键时,它显示错误“正在搜索程序:没有这样的文件或目录,ocaml”。我错过了什么?
【问题讨论】:
您需要设置 PATH 环境变量和 Emacs 的 exec-path 变量以更正值。一种可能性是使用类似的东西(在你的~/.emacs):
(defun set-exec-path-from-shell-PATH ()
(let ((path-from-shell (shell-command-to-string "$SHELL -c 'echo $PATH'")))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
(when window-system (set-exec-path-from-shell-PATH))
从 shell 和两个变量中正确获取 PATH。这样做的一个好处是您将只在一个地方设置PATH - 在您的 shell 初始化脚本中。
【讨论】:
M-x getenv PATH 和 C-h v exec-path 来检查这一点(在执行我的 sn- p 代码)并将值与echo $PATH 的实际 shell 输出进行比较 ...
所以我发现了这种很酷的模式,它可以将 shell 变量自动加载到 mac 用户的 emacs 环境中。非常方便:
https://github.com/purcell/exec-path-from-shell
只需安装它并更新您的 .emacs 文件即可。
【讨论】:
(add-hook 'after-init-hook 'exec-path-from-shell-initialize) 添加到我的初始化文件中,而不是文档所说的内容。