如何从R内访问一个bash环境变量在Emacs-ESS [英] How to access a bash environment variable from within R in emacs-ess

查看:125
本文介绍了如何从R内访问一个bash环境变量在Emacs-ESS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的.bashrc,我也行:

 导出设置= / home / user中/ settings.xml中

如果我在bash负载R,我可以使用 Sys.getenv 函数访问这个变量:

  Sys.getenv(设置)
/home/user/settings.xml

如果我在Emacs(M-X R)开拓R,设置为空:

  Sys.getenv(设置)

我曾尝试:


  1. 加入以下的.emacs的基础上,<一href=\"http://stackoverflow.com/questions/9663396/how-do-i-make-emacs-recognize-bash-environment-variables-for-compilation\">How我做的Emacs承认编译bash的环境变量?

      ;;获得环境中的.bashrc瓦尔
    (让((路径(壳命令到字符串〜/ .bashrc中;回声-n $设置)))
      (SETENV设置路径))


  2. 在使用emacs开放庆典 M-X项

     回声$#设置工程
    - [R
    Sys.getenv(设置)#works


  3. 如果我从终端打开emacs的,则设置变量是可以预期。从应用程序菜单打开emacs的(需要使用命令的/ usr / bin中/ emacs23%F 的Emacs )不的工作。


  4. 会议对输出进行比较(ENV)在bash VS emacs的装载R'当,但没有什么比(庆典=&LT ;, emacs的脱颖而出其他 = >)

     &GT; INSIDE_EMACS = 23.3.1,COMINT
    6D5
    &LT;设置= / home / user中/ settings.xml中
    9C8
    &LT; SHLVL = 1
    &GT; SHLVL = 0
    14a14
    &GT; PAGER =猫
    16d15
    &LT; PAGER =的/ usr / bin中/寻呼机
    19d17
    &LT; COLORTERM = GNOME终端
    25c23
    &LT; WINDOWID = 14680069
    &GT; DESKTOP_AUTOSTART_ID = 1020ce948b944a881133952536276450600000018630​​00
    &LT; TERM = xterm的
    &GT; TERM =哑


我可以为


  1. 从R内访问设置在Emacs-ESS

  2. 导出设置的地方,我可以访问它?


解决方案

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

  ;;设置在Emacs环境变量
(getenv的设置)
(SETENV设置/home/user/settings.xml)

原来的code(对于PATH)是:

  ;; Emacs有其自身的路径变量
(getenv的路径)
 (SETENVPATH
(CONCAT
 在/ usr /本地/的texlive / 2011 /斌/ x86_64的Linux的:
(getenv的路径)))

In my .bashrc, I have the line:

export SETTINGS=/home/user/settings.xml

If I load R in bash, I can access this variable using the Sys.getenv function:

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

If I open up R in Emacs (M-x R), SETTINGS is empty:

Sys.getenv("SETTINGS")
""

What I have tried:

  1. adding the following to .emacs, based on 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))
    

  2. opening up bash in emacs using M-x term

    echo $SETTINGS         # works
    R
    Sys.getenv("SETTINGS") #works
    

  3. If I open emacs from the terminal, the SETTINGS variable is available as expected. Opening emacs from the Applications menu (with either the command /usr/bin/emacs23 %F or emacs) does not work.

  4. comparing output from session("env") when loading R in bash vs emacs, but nothing stands out other than (bash = <, 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
    

Can I either

  1. access SETTINGS from within R in emacs-ess
  2. export SETTINGS somewhere that I can access it?

解决方案

I don't know about R and self-defined environment variables, but I set the PATH variable in emacs to the same value as in my bashrc. I modified my code to your problem, give it a shot and let me know if it works.

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

Original code (for PATH) is:

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

这篇关于如何从R内访问一个bash环境变量在Emacs-ESS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆