在我的.bashrc,我也行:如何從R內訪問bash的環境變量在Emacs-ESS
export SETTINGS=/home/user/settings.xml
如果我在bash負載R,我可以用Sys.getenv
函數訪問這個變量:
Sys.getenv("SETTINGS")
"/home/user/settings.xml"
如果我打開了在Emacs(MX R)R,設置爲空:
Sys.getenv("SETTINGS")
""
我曾嘗試:
添加使用
M-x term
echo $SETTINGS # works R Sys.getenv("SETTINGS") #works
如果我從終端打開的emacs,設置將下列到的.emacs,基於How do I make Emacs recognize bash environment variables for compilation?
;; get environment vars from .bashrc (let ((path (shell-command-to-string ". ~/.bashrc; echo -n $SETTINGS"))) (setenv "SETTINGS" path))
開放的bash在emacs的變量按預期可用。從「應用程序」菜單(使用命令
/usr/bin/emacs23 %F
或emacs
)打開emacs不起作用。在bash VS emacs的加載R'當從session("env")
比較輸出,但只不過是突出其他(慶典= <,emacs的=>):
> INSIDE_EMACS=23.3.1,comint 6d5 < SETTINGS=/home/user/settings.xml 9c8 < SHLVL=1 > SHLVL=0 14a14 > PAGER=cat 16d15 < PAGER=/usr/bin/pager 19d17 < COLORTERM=gnome-terminal 25c23 < WINDOWID=14680069 > DESKTOP_AUTOSTART_ID=1020ce948b944a88113395253627645060000001863000 < TERM=xterm > TERM=dumb
我可以要麼
- 在emacs-ess中從R中訪問SETTINGS
- export SETTINGS我可以訪問它的某個地方?
你是如何啓動Emacs的?如果你啓動一個bash shell(在環境中使用SETTINGS),並從那裏啓動Emacs,它應該可以工作。實際上,似乎父進程沒有這個環境變量(從Gnome shell開始或者這樣?)。 –
@MatthewLundberg我更新了我的答案(見點#3)。從終端工程開放。從應用程序菜單中調用'/ usr/bin/emacs23%F'打開,Gnome-do或鍵盤快捷鍵不打開。 – Abe