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

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

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

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


person SFbay007    schedule 22.08.2013    source источник


Ответы (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")))

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

person syohex    schedule 23.08.2013
comment
Спасибо syohex ... Я пробовал, но не сработало. Я включил полный путь .... открыл новый emacs ... попробовал скомпилировать M-x, затем echo $ PATH, но не смог найти в нем путь к корзине. Я также пробовал пару двоичных файлов из этой папки bin, но не работал. - person SFbay007; 23.08.2013
comment
Он хорошо работает на моей платформе (Emacs 24.2, Ubuntu 13.04). ~ / Mybin действительно установлен? Пожалуйста, проверьте значение exec-path перед выполнением M-x compile пользователем C-h v exec-path. - person syohex; 23.08.2013
comment
Ты прав. Корзина действительно была на пути exec. Но почему при попытке выполнить двоичное выполнение (компиляция M-x, затем двоичное имя) emacs жалуются на то, что не распознают его как допустимую команду? - person SFbay007; 23.08.2013

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

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

Я бы предпочел использовать exec-path, чем.

Примеры этого:

(add-to-list 'exec-path "FULL_PATH_TO_BIN"))
person Andreas Röhler    schedule 23.08.2013