如何从R内访问bash的环境变量在Emacs-ESS(How to access a bash en

2019-07-29 21:38发布

在我的.bashrc,我也行:

export SETTINGS=/home/user/settings.xml

如果我在bash加载R,I可以访问使用该变量Sys.getenv功能:

Sys.getenv("SETTINGS")
"/home/user/settings.xml"

如果我打开了在Emacs(MX R)R,设置为空:

Sys.getenv("SETTINGS")
""

我曾尝试:

  1. 加入以下的.emacs的基础上, 如何使Emacs的认识bash的环境变量编译?

     ;; get environment vars from .bashrc (let ((path (shell-command-to-string ". ~/.bashrc; echo -n $SETTINGS"))) (setenv "SETTINGS" path)) 
  2. 使用在Emacs开放庆典Mx term

     echo $SETTINGS # works R Sys.getenv("SETTINGS") #works 
  3. 如果我从终端打开emacs的,如预期的那样设置变量是可用的。 从应用程序菜单打开emacs的(带有命令/usr/bin/emacs23 %Femacs )不工作。

  4. 比较从输出session("env")在bash VS emacs的加载R'当,但没有突出高于其他(庆典= <,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 

我可以任

  1. 访问设置从内中的R的emacs-ESS
  2. 导出设置的地方,我可以访问它?

Answer 1:

我不知道R和自定义的环境变量,不过我现在在Emacs为相同的值PATH变量在我的.bashrc。 我修改了代码,您的问题,给它一个镜头,让我知道,如果它的工作原理。

;; set env variable in Emacs
(getenv "SETTINGS")
(setenv "SETTINGS" "/home/user/settings.xml")

(对于PATH)原始代码是:

;; Emacs has its own path variable
(getenv "PATH")
 (setenv "PATH"
(concat
 "/usr/local/texlive/2011/bin/x86_64-linux" ":"
(getenv "PATH")))


Answer 2:

当XSESSION开始可能不被读取.bashrc中。 尝试添加

export SETTINGS=/home/user/settings.xml

.xsessionrc.gnomerc (如果你使用的是GNOME)。 这些文件在启动时的X会话加载。



Answer 3:

如果你开始你在Emacs R对话,那么R对话将具有相同的环境变量emacs的。 所以,你应该首先确保你开始这样的Emacs,它的环境包含您的设置变量。 这样一来,你的R对话,你开始Emacs中,将设置也在其环境中。 究竟如何做到这一点取决于你的系统。



Answer 4:

你可以把

SETTINGS <- "/home/user/settings.xml"

.Rprofile作为一个变通。



文章来源: How to access a bash environment variable from within R in emacs-ess