emacs 爲什麼找不到執行程序?

我記得前段時間有個朋友問我爲什麼在emacs中打不開matlab程序?明明在terminal下是能打開的,卻在emacs中不行.

今天自己終於遇到了類似的問題,我今天安裝racket 6.0.安裝好後racket程序的執行路徑爲/usr/local/racket/bin

然後我將這個路徑加入到PATH裏了,在terminal環境下能打開


接下來安裝Geiser,它是emacs下連接racket的一個插件,它的安裝很簡單,我是把它編譯後的文件放到~/.emacs.d/site-lisp/geiser下

然後在init.el加入以下行,我的配製文件見https://github.com/aborn/emacs.d

(load "~/.emacs.d/site-lisp/geiser/elisp/geiser-load")

然後用M-x run-geiser  發現找不到racket程序. 這時我在想應該emacs裏並沒有用到bash環境裏的PATH,

不然爲什麼找不到?

上網找到了這兩個鏈接 link1 和  link2 ,這才發現emacs是執行路徑是由變量exec-path決定的.

然後打開M-x ielm 查看exec-path發現內容如下:

exec-path
("/usr/local/sbin" "/usr/local/bin" "/usr/sbin" "/usr/bin" "/sbin" "/bin" "/usr/games" "/usr/local/games" "/usr/lib/emacs/24.3/i686-linux-gnu")

發現並沒有 /usr/local/racket/bin

這樣的話,只要我們在配製文件init.el里加入以下行,將路徑/usr/local/racket/bin加入到exec-path裏就可以了

(add-to-list 'exec-path "/usr/local/racket/bin")

然後查看exec-path就有了

ELISP> exec-path
("/usr/local/racket/bin" "/usr/local/sbin" "/usr/local/bin" "/usr/sbin" "/usr/bin" "/sbin" "/bin" "/usr/games" "/usr/local/games" "/usr/lib/emacs/24.3/i686-linux-gnu")

然後執行M-x run-geiser就OK了

我的操作系統爲Ubuntu 14.04 LTS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章