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
并从 shell、system("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 提供相同的环境初始值设定项列表。
我是 运行 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
并从 shell、system("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 提供相同的环境初始值设定项列表。