可能重复的问题,但我不知道RStudio的启动过程,以告诉问题是否相同.我在Linux上使用RStudio Desktop v0.99.442.从RStudio里面的控制台,我运行
system("echo $PATH")
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)
但是,我的真实$PATH(我echo $PATH从控制台看到的)有很多其他程序,我希望能够使用来自R的system()来调用.例如,在我的.bashrc中,我有tabix附加到$PATH.
奇怪的是当我从控制台内的R会话中运行相同的命令时,我得到了
system("echo $PATH")
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games;/path/to/bcftools-1.2/htslib-1.2.1/tabix
Run Code Online (Sandbox Code Playgroud)
哪个是对的.因此,RStudio中的R会话与控制台中的R会话之间存在差异.它们不会加载相同的环境变量.如何让RStudio使用正确版本的$ PATH?
当我从命令行运行R时:
> library(ggplot2)
...
> path.package('ggplot2')
[1] "/home/yang/R/x86_64-pc-linux-gnu-library/2.13/ggplot2"
> .libPaths()
[1] "/home/yang/R/x86_64-pc-linux-gnu-library/2.13"
[2] "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
> Sys.getenv('R_LIBS_USER')
[1] "~/R/x86_64-pc-linux-gnu-library/2.13"
Run Code Online (Sandbox Code Playgroud)
(注意:当我从我的shell中检查时,该环境变量实际上不存在.)
但是从同一个盒子上运行的RStudio Server,以及作为同一用户登录后:
> path.package('ggplot2')
[1] "/home/yang/R/library/ggplot2"
> .libPaths()
[1] "/home/yang/R/library" "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library" "/usr/lib/R/library"
[5] "/usr/lib/rstudio-server/R/library"
> Sys.getenv('R_LIBS_USER')
[1] "/home/yang/R/library"
Run Code Online (Sandbox Code Playgroud)
你能解释为什么这些在默认情况下不同吗?这是RStudio定制吗?(为什么?)先谢谢.