Ubuntu系统下R Shiny应用读取环境变量的最简方法是什么
方案1:当前用户R终端永久生效配置
R启动时会自动读取专属的环境变量配置文件.Renviron,优先级高于shell的环境变量配置,操作步骤如下:
- 终端执行命令编辑用户级R环境配置:
nano ~/.Renviron - 按
变量名=变量值的格式添加配置,不需要加export或引号,示例:myvariable=你的凭证内容 - 保存退出后关闭所有现有R会话,重新打开R终端,执行
Sys.getenv('myvariable')即可正常返回对应值。
提示:如果需要服务器上所有用户的R会话都能读取该环境变量,可以编辑系统级R环境配置
/etc/R/Renviron.site,格式和上述一致。
方案2:Shiny Server应用可读取配置
开源Shiny Server默认以独立的shiny用户通过systemd服务运行,不会继承普通用户的环境变量,需要修改服务配置:
- 编辑Shiny Server的systemd覆写配置:
sudo systemctl edit shiny-server.service - 在打开的编辑界面添加如下内容,可配置多个环境变量:
[Service] Environment="myvariable=你的凭证内容" Environment="其他变量名=对应值"
- 保存退出后重载配置并重启服务生效:
sudo systemctl daemon-reloadsudo systemctl restart shiny-server
之前操作失效的原因
- 写入
~/.profile的环境变量仅对交互式bash会话生效,非bash启动的R会话(如菜单打开的R终端、RStudio会话)不会继承该变量 Sys.setenv()仅对当前R会话生效,会话结束后变量自动销毁;save()、save.image()只能保存R内部变量对象,无法存储系统环境变量,因此加载后不会生效。
内容的提问来源于stack exchange,提问作者Garrett
相关产品推荐
相关产品推荐

