我应该在哪里设置R中的变量PATH?

时间:2017-05-10 01:42:01

标签: r environment-variables

我经常需要调用Tex Live二进制文件以便在R中进行编译。但是,在升级Tex Live分发版之后,需要在PATHSys.getenv("PATH"))变量中手动更新当前二进制文件的路径。

作为Ubuntu系统上的单个用户,我应该在哪个文件中更新该值,以便无论R从哪个目录R启动,R都能正确获取PATH

我仍然不能收集的一点是R在哪里得到它的网站范围(我的意思是所有用户,即使说错了)PATH变量集,因为没有这样的变量名称" PATH"发生在" R_HOME / etc /"中的任何文件内(Renviron,Renviron.site,Rprofile.site)。和用户的主目录?我还没有设置Sys.getenv("R_ENVIRON")Sys.getenv("R_ENVIRON_USER")值。

我感谢任何人的投入。

2 个答案:

答案 0 :(得分:0)

编辑:我应该在发布之前进行测试。我在下面描述的内容没有奏效。 (对我自己的回答投反对票是很奇怪的事。)

在我的系统(macOS,bash)上,R.app没有从我的Shell环境或$PATH中拾取我的.profile。但是RStudio正在接手。我不了解不同的行为。

获得一致行为的一种方法是在Renviron文件中进行指定。

如果您在come目录中创建名为.Renviron的文件,且该行类似

Sys.setenv(PATH="/opt/local/bin:usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin")

(当然还有所需的路径元素)应该可以使您保持一致的行为。

缺点是您需要手动维护它。我想您可以从生成.Renviron文件的其他启动脚本中运行一个脚本。但是无论哪种方式,我都认为这是一个替代方案,实际上无法理解R从何处获取环境。

答案 1 :(得分:0)

@JeffreyGoldberg的解决方案很接近,但不太正确。

Rprofile文件被解释为R代码 Renviron文件只能包含名称值对,并且不能解释为R代码

从“启动”帮助中:

  

请注意,启动时使用两种文件:包含要设置的环境变量列表的环境文件和包含R代码的概要文件。

我不确定这个问题是否专门询问了如何为某个特定用户设置PATH而不是PATH站点范围值,但是您可以在三个位置放置这些文件。

  1. 项目目录(即您选择从中启动R的目录)
  2. HOME
  3. R_HOME/etc

这些位置按上面编号的顺序搜索。第一个位置可以包含特定于项目的配置,第二个位置可以包含特定于用户的配置,第三个位置可以是站点范围的配置设置。找到文件后,它将被使用,因此本地优先于全局。不要以为您可以创建一个更具体的版本来简单地更新您在更常规的配置文件中所做的工作。 R_HOME/etc/Renviron是在安装时创建的,不应进行编辑。您可以创建一个名为R_HOME/etc/Renviron.site的文件,但不要编辑R_HOME/etc/Renviron

要创建站点范围的PATH值,您需要在R_HOME/etc中的文件中进行设置。您可以在此处使用Renviron.siteRprofile.site作为文件名。对于R_HOME/etc中的文件,请勿在该位置使用RenvironRprofile.Renviron.Rprofile作为配置文件或环境文件的名称。您可以使用R.home()Sys.getenv("R_HOME")

找出R会话中的R_HOME。

要为单个用户创建PATH值,请在HOME中的文件中进行设置,您可以使用Sys.getenv("HOME")path.expand("~")在R会话中找到该文件。您也可以只使用“〜”来引用HOME。在此,Renviron文件应为~/.Renviron,Rprofile文件应为~/.Rprofile。请注意HOME目录与R_HOME/etc

在目录中配置文件和环境文件的命名方式之间的区别

要为单个项目创建PATH,请将其设置在该项目的顶级目录中的文件中。像在主目录中一样命名文件(.Rprofile.Renviron)。

如果要创建Renviron文件,该文件应包含以下行:

PATH=<your path>

<>不应包括在内。一个例子是:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

如果要创建Rprofile文件,该文件应包含以下行:

Sys.setenv("<your path>")
再次

,请勿包含“ <”或““>”。一个例子是:

Sys.setenv("/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin")

可以通过多种方式来获取和编辑PATH变量(例如,在新路径的末尾或起点处添加)。您还可以使用设置环境变量(如果该变量不存在和/或不包含您想要的变量)的策略。我倾向于只简单地设置路径并直接对其进行编码。

最后一点说明,如果您从命令行界面运行R,则环境变量可能会从您的Shell中继承。 RStudio还具有其自己的启动顺序,并且可以修改PATH变量的结尾。它应该按照您的Rprofile或Renviron文件中定义的开始。 R Console应用程序本身具有最少的带有系统环境变量的功能,并且应完全按照Rprofile或Renviron文件设置的路径接受您的路径。