RStudio服务器和Microsoft R open:缺少环境变量

RStudio服务器和Microsoft R open:缺少环境变量,r,environment-variables,ubuntu-14.04,rstudio,revolution-r,R,Environment Variables,Ubuntu 14.04,Rstudio,Revolution R,我在AmazonEC2上运行RStudio服务器(0.99.879),最近更新到MicrosoftR Open3.2.3(以前是Revolution R)。所有软件都在Ubuntu 14.04上运行 因为我想在所有shell会话中为所有用户提供我的Amazon访问密钥,所以我将它们放在/etc/environment中,比如AWS\u access\u KEY=123 RStudio在用户RStudio下运行,我通过在RStudio中执行system(“whoami”)检查了该用户。在切换到Mi

我在AmazonEC2上运行RStudio服务器(0.99.879),最近更新到MicrosoftR Open3.2.3(以前是Revolution R)。所有软件都在Ubuntu 14.04上运行

因为我想在所有shell会话中为所有用户提供我的Amazon访问密钥,所以我将它们放在
/etc/environment
中,比如
AWS\u access\u KEY=123

RStudio在用户
RStudio
下运行,我通过在RStudio中执行
system(“whoami”)
检查了该用户。在切换到Microsoft R Open[MRO]之前,
系统(“echo$AWS\u ACCESS\u KEY”)
(从RStudio执行)给出了正确的结果
123
。但现在它返回一个空字符串

但是,如果我通过
su-rstudio
在控制台中切换到user
rstudio
并从shell启动MRO,
系统(“echo$AWS\u ACCESS\u KEY”)
会给出正确的结果,这让我非常困惑

似乎只有RStudio和MRO才能使R忘记在
etc/environment
中定义的环境变量

你们知道这种奇怪行为的原因吗?有可能修复的指针吗?

我真的很想把钥匙放在一个地方(即
/etc/environment
),而且绝对不要硬编码在我的R代码中。我能想到的一个修复方法是从R中读取
/etc/environment
,提取
AWS\u ACCESS\u键
,并通过
Sys.setenv()
进行设置。但这主要只是一个黑客,我想了解真正的问题是什么


顺便说一句:也许我应该提到,我必须将R开始脚本中的
R_HOME_DIR
变量
/usr/bin/R
更改为
R_HOME_DIR=/usr/lib64/MRO-3.2.3/R-3.2.3/lib/R
,因为之前确定主目录的代码不适用于MRO。

请记住,RStudio服务器(开源版)不在登录shell下运行用户会话。因此,当您
su-rstudio
时,您将获得bash启动时初始化的shell变量


谢天谢地,有一个非常简单的方法可以解决这个问题:symlink
R\u HOME/etc/Renviron.site
(请参阅)到
/etc/environment
。R的环境文件与Linux的格式相同(即KEY=VALUE),因此您可以向R和bash提供相同的环境初始值设定项列表。

太好了!事实上,我认为这个问题非常具体,不太可能得到答案。但今天似乎是我的幸运日。:)既然常规R版本一切正常,我想这是一场革命(或微软)已经改变了启动程序中的某些内容。无论如何,为了防止有人感兴趣,这里是创建sudo ln-s/etc/environment/usr/lib64/MRO-3.2.3/R-3.2.3/lib/R/etc/Renviron.site链接的命令。人们可能不得不将最后一个路径更改为自己的特定MRO安装路径,但是.OMG完全忘记了我已经在
R\u HOME/etc/Rprofile.site
中为常规R编写了读取和处理
/etc/environment
的代码。所以,这个谜题就解决了:MRO还有另一个
Rprofile.site
文件,我没有在其中设置这些变量。但我会保留@Jonathan的解决方案,因为它更干净、更简单。