我有一个R包,可以在浏览器中触发Oauth2流(通过httr
)。用户处于奇怪的情况,他们的IT部门需要特定的系统默认浏览器(在这种情况下,它是IE + Windows)。但是用户需要在其他浏览器中执行OAuth。
我知道R_BROWSER
环境变量,并希望暂时将其设置为需要的浏览器。 (然后希望在OAuth流程中获得荣誉......)
我在Mac上摆弄这个,我的默认浏览器是Safari。我常见的情况是R_BROWSER
就是这个
Sys.getenv("R_BROWSER")
#> [1] "/usr/bin/open"
我知道如何强制使用来自shell的Chrome,或者来自R的system()
来电:
system("/usr/bin/open -a '/Applications/Google Chrome.app' 'http://slate.com'")
但是,如何将这些知识转移到R_BROWSER
的适当设置?这不起作用:
Sys.setenv("R_BROWSER" = "/usr/bin/open -a '/Applications/Google Chrome.app'")
当我随后browseURL()
时,会使用通常的Safari默认设置。我怀疑答案因操作系统而异。对于Mac OS,似乎希望避免使用open
并以某种方式直接指定浏览器。
答案 0 :(得分:4)
首先,您还应保存axis()
选项和browser
的先前值,以便您可以恢复会话的先前状态:
R_BROWSER
然后,您可以通过在设置old_R_BROWSER <- Sys.getenv("R_BROWSER")
old_browser <- options()$browser
后重新运行命令 @ Hack-R 来实现所需的行为。
R_BROWSER
(您也可以直接设置Sys.setenv("R_BROWSER" = "/usr/bin/open -a '/Applications/Safari.app'")
options(browser = as.vector(Sys.getenv("R_BROWSER")))
browseURL("http://www.google.com") # opens in Safari, though my default is Chrome
和options(browser = "/usr/bin/open -a '/Applications/Safari.app'")
。)
最后,恢复系统状态
browseURL
答案 1 :(得分:2)
R查找配置时指定的浏览器。
选项的默认设置(&#34;浏览器&#34;)设置为
options(browser = as.vector(Sys.getenv("R_BROWSER")))
并在配置时找到的浏览器在R_BROWSER变量中设置 在文件etc / Renviron中。所以编辑该文件。
最后,如果这是一个共享系统,您可以拥有以下内容 〜/ .Renviron文件
R_BROWSER=${R_BROWSER-'FireFox'}
看?启动。 (您也可以使用Rprofile文件,但通常也会使用 只有一个.Renviron文件。)
我的基础是this。