2012-08-10 46 views
0

在Mac上,在environment.plist中定義環境變量將允許您在Emacs.app中使用環境變量。在Linux上,是否有這樣的等價物?在Linux中爲Emacs訪問定義環境變量

我不想使用環境變量在shell或終端仿真器之一,但也爲find-file(CX CF),shell-command(C-!)等,我有很多的路徑定義爲環境在這裏會有幫助的變量。例如,查找具有find-file的文件可以是$ WORK/projectname等。

我想最簡單的方法就是內.emacs使用setenv,但我有很多這樣的變量,這將是更好,如果我能在一個外部文件中定義一次,並有Emacs的在讀它。

編輯:對不起,困惑。這個問題特別解決了Emacs訪問問題,因爲在調用shell,eshell或term之前,〜/ .bashrc中定義的變量不可用於Emacs。

+0

我這麼認爲,但不幸的是沒有提供解決方案... – hatmatrix 2012-08-11 12:40:46

回答

2

爲了能夠訪問您的.bashrc中的變量,您需要從bash shell啓動emacs。如果您只是點擊一個圖標,那麼.bashrc不會被讀取,您將無法訪問您的變量。

如果您絕對無法從bash shell啓動emacs,請查找由您的桌面環境加載的init文件。在我的情況下,它是.xsession。我輸出的任何變量都可用於emacs。

要訪問環境變量,請使用getenv

+1

沒錯,但是.bashrc看起來並不適合OP的任務。如上所述,建議輸出它的shell腳本。否則bash會使用這些設置。 – 2012-08-10 13:00:17

+0

我最終編寫了一個shell腳本,使用setenv創建了一個elisp文件(來自.bashrc),並帶有一系列變量定義。但是,我會研究.xsession(或.xsessionrc,.xprofile?) - 我認爲這正是我最初尋找的內容... – hatmatrix 2012-08-10 14:35:55

1

如果您在〜/ .bashrc中定義了環境變量,則它們在用戶shell中可用於所有命令。 正確的語法是:

export VARIABLE="value" 
1

您可以編輯.bashrc在你的主目錄,在這裏你可以添加自己的別名,定義環境變量並添加自定義腳本路徑。

3

這裏一個腳本,從LISP越來越$ HOME定義了幾個環境變量,通過Emacs的閱讀在批處理模式下

http://bazaar.launchpad.net/~python-mode-devs/python-mode/python-mode/view/head:/test/python-mode-tests.sh

例如使用(getenv的 「HOME」)

+0

有趣的 - 所以你實際上在Emacs調用中定義環境變量。這並沒有發生在我身上,但我已經生成了一個單獨的elisp文件,我讀入了我的.emacs文件。 – hatmatrix 2012-08-10 14:33:41