我如何让 R 读取我的环境变量?
- 2024-11-13 08:36:00
- admin 原创
- 138
问题描述:
我在 EC2 竞价实例上运行 R,我需要 R 在脚本运行后终止实例并取消竞价请求。
为此,我已将“请求 ID”设置为环境变量/.bashrc
,我的计划是在脚本准备就绪后简单地将以下代码调用到 R中
system("ec2-cancel-spot-instance-requests $SIR")
我遇到的问题是,当我env
从 R 外部输入时,R 没有“看到”我看到的相同环境变量,因此命令不起作用。
我已经检查过,如果我在 R 上设置环境变量/etc/environment
,就可以看到这些变量,但这是另一个问题。由于这些变量是动态的(每次创建 Spot 实例时,实例 ID 和请求 ID 都不同),我正在运行一个脚本来以以下形式创建它们:
export SIR=`cat /etc/ec2_instance_spot_id.txt`
该文件包含动态 ID
那么,如何将“动态”环境变量插入/etc/environment
?或者,如何让 R 读取环境变量/.bashrc
?
解决方案 1:
您想要的Sys.getenv()
就像Sys.getenv("PATH")
说的那样。
或者举个例子,尝试
SIR <- Sys.getenv("SIR")
system(paste("ec2-cancel-spot-instance-requests", SIR))
至于在启动时设置变量,请help(Startup)
参阅了解~/.Renvironment
等
解决方案 2:
我的方法是这样的:我将项目级环境变量存储在一个.env
文件中。为了使其在 R 中可访问,我使用了
> readRenviron(".env")
然后访问特定变量
> Sys.getenv("RDS_UID")
而且效果非常好。
解决方案 3:
使用Sys.getenv()
您可以看到当前环境中列出的所有变量。
但是,它们与您当前 shell 中使用的不同,例如在 .profile 中指定的。
要设置 R 的变量,请.Renviron
在主目录中创建一个文件并在其中写入
MYDIRECTORY="/home/wherever"
重新启动 R 后,你将能够使用以下命令访问此变量
Sys.getenv("MYDIRECTORY")
解决方案 4:
更完整的方法:
创建一个文件,myenvs/.Renviron
内容如下:
USERNAME="my_username"
PASSWORD="StrongPassword"
然后,在 R 中加载并使用:
readRenviron("myenvs/.Renviron")
username <- Sys.getenv("USERNAME")
password <- Sys.getenv("PASSWORD")
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD