我尝试了以下方法:
(setenv "PATH" (concat (getenv "PATH") ":~/mybin"))
(setq exec-path (append exec-path '(":~/mybin")))
但这从来没有奏效。我试过M-!并键入其中一个二进制名称,并且在使用二进制名称相同的结果进行 Mx 编译时也会给出“未知命令”。Mx compile then echo $PATH 给出了没有我的 ~/mybin 文件夹的路径。我在solaris上。我究竟做错了什么?
: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 之间共享环境变量很容易。
emacs$PATH不存在。$PATH是一个外壳变量。Emacs 和 shell 有不同的命名空间。
然而——因为 Emacs 可能通过 getenv、setenv 读取和设置 $PATH——似乎没有办法查看访问它的库。
我更喜欢使用 exec-path 。
例如这样做:
(add-to-list 'exec-path "FULL_PATH_TO_BIN"))