Добавяне на двоичен път към emacs $PATH

Опитах следното:

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

Но това никога не проработи. Опитах М-! и въвеждане на едно от двоичните имена и това даде "неизвестна команда" също и при компилиране на M-x с двоично име същия резултат. M-x компилира след това ехо $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 и shell.

person syohex    schedule 23.08.2013
comment
Благодаря, syohex...опитах това, но не се получи. Включих пълния път....отворих нов emacs...пробвах компилиране на M-x, след което echo $PATH, но не можах да намеря bin пътя в него. Опитах също няколко двоични файла от тази папка 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-path. Но как така, когато се опитва да изпълни двоично изпълнение (компилиране на M-x и след това двоично име), emacs се оплаква, че не го разпознава като валидна команда? - person SFbay007; 23.08.2013

Emacs $PATH не съществува. $PATH е променлива на shell. Emacs и shell имат различни пространства от имена.

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

Бих предпочел да отида с exec-path, отколкото.

За примери, които правят това:

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