RStudio Server与Microsoft R open:环境变量缺失

时间:2016-02-29 16:30:59

标签: r environment-variables ubuntu-14.04 rstudio revolution-r

我在Amazon EC2上运行RStudio Server(0.99.879),最近更新到Microsoft R Open 3.2.3(以前称为Revolution R)。所有软件都在Ubuntu 14.04上运行。

由于我希望所有用户都能在所有shell会话中使用我的亚马逊访问密钥,因此我将其放在/etc/environment AWS_ACCESS_KEY=123中。

RStudio在用户rstudio下运行,我通过在RStudio中执行system("whoami")来检查。在切换到Microsoft R Open [MRO]之前,system("echo $AWS_ACCESS_KEY")(从RStudio执行)给出了正确的结果123。但现在它返回一个空字符串。

但是,如果我通过rstudio切换到控制台中的用户su - rstudio并从 shell 启动MRO,system("echo $AWS_ACCESS_KEY")会给出正确的结果,困惑我。

好像只有RStudio 一起与MRO一起使R忘记etc/environment中定义的环境变量。

你们知道这种奇怪行为的原因是什么?有关可能修复的指示吗?

我真的希望将密钥保存在一个地方(/etc/environment)并且绝对不会在我的R代码中硬编码。我能想到的一个解决方法是从R中读取/etc/environment,提取AWS_ACCESS_KEY并通过Sys.setenv()进行设置。但这主要是一个黑客,我想了解真正的问题是什么......

BTW:也许我应该提一下,我必须将R start script R_HOME_DIR中的/usr/bin/R变量更改为R_HOME_DIR=/usr/lib64/MRO-3.2.3/R-3.2.3/lib/R,因为之前确定主目录的代码不起作用与MRO。

1 个答案:

答案 0 :(得分:2)

请记住,RStudio Server(开源版)不会在登录shell下运行用户会话,这一点非常重要。因此,当您su - rstudio时,您将获得在bash启动时初始化的shell变量。

值得庆幸的是,有一个非常简单的方法:符号链接R_HOME/etc/Renviron.site(请参阅R initialization)到/etc/environment。 R的环境文件格式与Linux相同(即KEY = VALUE),因此您可以为R和bash提供相同的环境初始化列表。