如何从R内访问一个bash环境变量在Emacs-ESS [英] How to access a bash environment variable from within R in emacs-ess
问题描述
在我的.bashrc,我也行:
导出设置= / home / user中/ settings.xml中
如果我在bash负载R,我可以使用 Sys.getenv
函数访问这个变量:
Sys.getenv(设置)
/home/user/settings.xml
如果我在Emacs(M-X R)开拓R,设置为空:
Sys.getenv(设置)
我曾尝试:
-
加入以下的.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设置路径)) -
在使用emacs开放庆典
M-X项
回声$#设置工程
- [R
Sys.getenv(设置)#works -
如果我从终端打开emacs的,则设置变量是可以预期。从应用程序菜单打开emacs的(需要使用命令
的/ usr / bin中/ emacs23%F
或的Emacs
)不的工作。 -
从
会议对输出进行比较(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 = 1020ce948b944a88113395253627645060000001863000
&LT; TERM = xterm的
&GT; TERM =哑
我可以为
- 从R内访问设置在Emacs-ESS
- 导出设置的地方,我可以访问它?
我不知道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:
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))
opening up bash in emacs using
M-x term
echo $SETTINGS # works R Sys.getenv("SETTINGS") #works
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
oremacs
) does not work.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
- access SETTINGS from within R in emacs-ess
- 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屋!