Jor*_*elf 22 linux ubuntu r environment-variables amazon-ec2
我在EC2现场实例上运行R,我需要R来终止实例并在脚本运行后取消现场请求.
为此,我已将"请求ID"设置为环境变量/.bashrc,我的计划是在脚本准备好后简单地将以下代码调用到R中
system("ec2-cancel-spot-instance-requests $SIR")
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是R没有"看到"我env从外部R 键入时看到的相同环境变量,因此命令不起作用.
我已经检查过,如果我在/etc/environmentR 处设置我的环境变量就能看到这些变量,但这是另一个问题.由于这些变量是动态的(每次创建专色实例时实例ID和请求ID都不同),我运行的脚本以下列形式创建它们:
export SIR=`cat /etc/ec2_instance_spot_id.txt`
Run Code Online (Sandbox Code Playgroud)
该文件包含动态ID的位置
那么,我如何将"动态"环境变量插入/etc/environment?或者,我如何让R读取环境变量/.bashrc?
任何正确方向的提示将非常感谢!
Dir*_*tel 23
你想Sys.getenv()在Sys.getenv("PATH"),说.
或者为你的例子,试试吧
SIR <- Sys.getenv("SIR")
system(paste("ec2-cancel-spot-instance-requests", SIR))
Run Code Online (Sandbox Code Playgroud)
至于在启动时设置变量,请参阅help(Startup)了解~/.Renvironment等
小智 9
使用Sys.getenv()您可以查看当前环境中列出的所有变量.
但是,它们与当前shell中使用的不同,例如.profile中指定的那些.
要为R设置变量,请.Renviron在主目录中创建一个文件并在那里写入
MYDIRECTORY="/home/wherever"
Run Code Online (Sandbox Code Playgroud)
重新启动R后,您将能够访问此变量
Sys.getenv("MYDIRECTORY")
Run Code Online (Sandbox Code Playgroud)
我对 R 很陌生,但我的方法是这样的:我将项目级环境变量存储在一个.env文件中。为了使其在 R 中可访问,我使用了
> readRenviron(".env")
Run Code Online (Sandbox Code Playgroud)
然后访问特定变量
> Sys.getenv("RDS_UID")
Run Code Online (Sandbox Code Playgroud)
它工作得很好。
| 归档时间: |
|
| 查看次数: |
19665 次 |
| 最近记录: |