将二进制路径添加到emacs $ PATH

时间:2013-08-22 23:18:54

标签: emacs elisp

我尝试了以下内容:

(setenv "PATH" (concat (getenv "PATH") ":~/mybin"))
(setq exec-path (append exec-path '(":~/mybin")))

但那从未奏效。我试过M-!并且在使用二进制名称进行M-x编译时,也会输入一个二进制名称并给出“未知命令”。 M-x编译然后echo $ PATH给出了没有我的〜/ mybin文件夹的路径。 我在solaris上。我做错了什么?

2 个答案:

答案 0 :(得分:4)

exec-path不需要

:exec-path是目录路径列表。 你应该使用绝对路径。你应该修复如下。

(setenv "PATH" (concat (getenv "PATH") ":" (expand-file-name "~/mybin")))
(setq exec-path (append exec-path (list (expand-file-name "~/mybin")))

我建议您使用exec-path-from-shell将PATH设置为Emacs。 它提供了从登录shell获取环境变量并将它们设置为Emacs的函数。在Emacs和shell之间共享环境变量很容易。

答案 1 :(得分:1)

emacs $PATH不存在。 $PATH是一个shell变量。 Emacs和shell有不同的名称空间。

但是 - 由于Emacs可能会通过getenv读取并设置$ PATH,所以setenv - 似乎没有办法查看访问它的库。

我更喜欢使用exec-path而不是。

这样做的例子:

(add-to-list 'exec-path "FULL_PATH_TO_BIN"))