2013-08-22 50 views
1

二進制路徑我試過如下:

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

但從未工作過。我試過M-!並輸入其中一個二進制名稱,並且在進行M-x編譯時也給出了「未知命令」,二進制名稱的結果相同。 M-x編譯然後echo $ PATH給出了沒有我的〜/ mybin文件夾的路徑。 我在solaris上。我究竟做錯了什麼?

回答

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之間共享環境變量非常簡單。

+0

感謝syohex ......我試過,但沒有奏效。 我包括完整的路徑....打開一個新的emacs ...嘗試M-X編譯然後echo $ PATH,但無法找到它的bin路徑。 我也嘗試了一些來自該bin文件夾的二進制文件,但沒有工作。 – SFbay007

+0

它適用於我的平臺(Emacs 24.2,Ubuntu 13.04)。 「〜/ mybin」真的設置了嗎?在用'C-h v exec-path'執行'M-x compile'之前,請檢查'exec-path'的值。 – syohex

+0

你說得對。 bin確實在exec路徑中。但是,當試圖執行一個二進制文件時(M-x編譯「二進制名稱」),emacs抱怨沒有將其識別爲有效的命令? – SFbay007

1

emacs $PATH不存在。 $PATH是一個shell變量。 Emacs和shell有不同的名稱空間。

但是 - 由於Emacs可能通過getenv讀取和設置$ PATH,setenv - 似乎沒有辦法查看訪問它的庫。

我寧願去用exec-path比。

有關示例這樣做:

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