我有一个在浏览器中触发 Oauth2 流的 R 包(通过 httr
)。一个用户在奇怪的情况下,他们的 IT 部门需要一个特定的系统默认浏览器(在这种情况下,它是 IE + Windows)。但是用户需要在不同的浏览器中进行 OAuth。
我知道 R_BROWSER
环境变量,想暂时设置到需要的浏览器。 (然后希望这将在 OAuth 流程中得到尊重......)
我在 Mac 上摆弄这个,我的默认浏览器是 Safari。我平时的情况 wrt R_BROWSER
这是
Sys.getenv("R_BROWSER")
#> [1] "/usr/bin/open"
我知道如何通过
system()
强制使用例如 shell 中的 Chrome 或 R 中的 Chrome。称呼: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
并以某种方式直接指定浏览器。
最佳答案
首先,您还应该保存 browser
的先前值选项和 R_BROWSER
以便您可以恢复 session 的先前状态:
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
有效。)最后,恢复系统状态
Sys.setenv("R_BROWSER" = old_R_BROWSER)
options(browser = old_browser)
关于r - 如何使用非默认浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38006500/