RStudio Server 与 Microsoft R 打开:缺少环境变量

RStudio Server together with Microsoft R open: environment variables missing

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

上运行

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

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

但是,如果我通过 su - rstudio 在控制台中切换到用户 rstudio 并从 shellsystem("echo $AWS_ACCESS_KEY")给出了正确的结果,这让我很困惑。

似乎只有 RStudio 与 MRO 一起 让 R 忘记了 etc/environment.

中定义的环境变量

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

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

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

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

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