一尘不染

如何让R读取我的环境变量?

linux

我在EC2竞价型实例上运行R,并且需要R终止实例并在脚本运行后取消竞价请求。

为此,我在环境变量中设置了“请求ID” /.bashrc,我的计划是在脚本准备好后将以下代码简单地调用到R中

system("ec2-cancel-spot-instance-requests $SIR")

我遇到的问题是R无法“看到”我env从外部R 键入时看到的相同环境变量,因此该命令无法正常工作。

我已经检查了一下,如果我将环境变量设置为/etc/environmentR,就可以看到这些变量,但这是另一个问题。由于这些变量是动态的(每次创建竞价型实例时,实例ID和请求ID都是不同的),因此我正在运行脚本以以下形式创建它们:

export SIR=`cat /etc/ec2_instance_spot_id.txt`

该文件包含动态ID的位置

那么,如何将“动态”环境变量插入/etc/environment?或者,如何使R读取位于的环境变量/.bashrc

朝正确方向的任何提示将不胜感激!


阅读 439

收藏
2020-06-07

共1个答案

一尘不染

你想Sys.getenv()Sys.getenv("PATH"),说。

或者以您的示例为例

SIR <- Sys.getenv("SIR")   
system(paste("ec2-cancel-spot-instance-requests",  SIR))

至于在启动时设置变量,请参阅help(Startup)了解~/.Renvironment

2020-06-07