Добавление двоичного пути в emacs $PATH

Я попробовал следующее:

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

Но это никогда не работало. Я попробовал М-! и набрав одно из двоичных имен, и это дало "неизвестную команду" также при выполнении Mx-компиляции с тем же результатом двоичного имени. Mx compile затем echo $PATH дал путь без моей папки ~/mybin. Я на солярисе. Что я делаю неправильно?

2 ответа

: не требуется для exec-path. exec-path список путей к каталогам И вы должны использовать абсолютные пути. Вы должны исправить, как показано ниже.

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

Я рекомендую вам использовать https://github.com/purcell/exec-path-from-shell для установки PATH в Emacs. Он предоставляет функции, которые получают переменные окружения из вашей оболочки входа и устанавливают их в Emacs. Переменные среды легко делить между Emacs и shell.

Emacs $PATH не существует $PATH переменная оболочки Emacs и shell имеют разные пространства имен.

Однако - поскольку Emacs может читать и устанавливать $PATH через getenv, setenv - кажется, не что иное, как поиск библиотеки, к которой он обращался.

Я предпочел бы пойти с exec-path, чем.

Для примеров, делающих это:

(add-to-list 'exec-path "FULL_PATH_TO_BIN"))
Другие вопросы по тегам