我试图从bash访问R {'{3}}。安装指南最初让我相信$ R_HOME是在bash中声明的。但是,这似乎并不准确。
有没有办法从bash访问这些环境变量?
之前的问题已经询问如何使用Sys.getenv()或Sys.setenv()从R中访问这些变量。这个问题的重点是能够通过bash访问信息。简单地调用echo $R_HOME
不会在bash变量中产生适当的路径。
例如,我可以使用复杂的方法获取信息:
R_HOME=$(Rscript -e "Sys.getenv('R_HOME')" | grep -Po '".*?"' | sed 's/"//g')
所以我会收到: [1]" / usr / lib64 / R"
Grep然后给出: "在/ usr / lib64下/ R"
最后sed: 的/ usr / lib64下/ R
我真的更喜欢用一种方法让我访问所有环境变量,而不必经历这个过程。
environmental variables中列出了一些环境变量的定义。但是,bash中没有一个可用。
答案 0 :(得分:2)
如果未在bash
中设置,但您需要使用它,为什么不这样做:
R_HOME=`Rscript --silent -e 'writeLines(Sys.getenv("R_HOME"))'`
echo $R_HOME
/Library/Frameworks/R.framework/Resources
(显然,我在OS X上)
您可以这样获得所有R_
变量:
Rscript -e 'for (x in grep("^R_", names(Sys.getenv()), value=TRUE)) writeLines(sprintf("%s=%s", x, Sys.getenv(x)))'
然后获取bash
脚本的输出。
答案 1 :(得分:1)
不,这些变量都不会在bash中提供 - 除非你自己设置它们。
您可能对?Startup
感兴趣,这解释了R如何设置环境变量的过程:
除非在命令行上给出了--no-environ,否则R搜索要处理的站点和用户文件以设置环境变量。站点文件的名称是环境变量R_ENVIRON指向的名称;如果未设置,则使用“R_HOME / etc / Renviron.site”(如果存在,则不在'factory-fresh'安装中)。用户文件的名称可以由R_ENVIRON_USER环境变量指定;如果未设置,则在当前或用户的主目录中(按此顺序)搜索的文件为“.Renviron”。
请注意,您可以运行两个脚本,这些脚本具有不同的Renviron
文件,因此具有不同的环境变量。我不确定你要做什么,但值得注意的是,给定变量可能没有一个真正的价值。
那就是说,你可以读取默认的Renviron
并自己设置所有变量:
$ R_HOME=`R RHOME`
$ source $R_HOME/etc/Renviron
$ echo $R_PAPERSIZE
a4
答案 2 :(得分:1)
这可能比之前的两个答案更容易提出:
由于RHOME
非常重要,请R RHOME
:
edd@don:~$ R RHOME
/usr/lib/R
edd@don:~$ val=$(R RHOME)
edd@don:~$ echo ${val}
/usr/lib/R
edd@don:~$
基本上所有其他人都可以通过R CMD config ...
edd@don:~$ R CMD config --help | head -20
Usage: R CMD config [options] [VAR]
Get the value of a basic R configure variable VAR which must be among
those listed in the 'Variables' section below, or the header and
library flags necessary for linking against R.
Options:
-h, --help print short help message and exit
-v, --version print version info and exit
--cppflags print pre-processor flags required to compile
a C/C++ file using R as a library
--ldflags print linker flags needed for linking a front-end
against the R library
--no-user-files ignore customization files under ~/.R
--no-site-files ignore site customization files under R_HOME/etc
Variables:
BLAS_LIBS flags needed for linking against external BLAS libraries
CC C compiler command
CFLAGS C compiler flags
edd@don:~$
最后,对于运行R会话,您可以启动并访问它:
edd@don:~$ Rscript -e 'cat(Sys.getenv("PATH"))' # manual break
/home/edd/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:\
/sbin:/bin:/usr/games:/usr/local/gamesedd@don:~$