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

dd_*_*kie 5 r environment-variables

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

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

我仍然不了解的一点是,它是从何处R获得其站点范围内的PATH变量集(我的意思是对所有用户,即使这样说是错误的)变量集,因为在任何文件中都不会出现“ PATH”这样的变量名(Renviron, Renviron.site,Rprofile.site)在“ R_HOME / etc /”和用户的主目录中?我也没有设置Sys.getenv("R_ENVIRON")Sys.getenv("R_ENVIRON_USER")值。

在此感谢任何人的投入。

De *_*ica 5

@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")

要为单个用户创建 PATH 值,请将其设置在 中的文件中,您可以使用或HOME在 R 会话中找到该文件。您也可以只使用“~”来引用。这里,Renviron 文件应该是和 Rprofile 文件。请注意配置文件和环境文件在目录中与在目录中的命名方式之间的差异。Sys.getenv("HOME")path.expand("~")HOME~/.Renviron~/.RprofileHOMER_HOME/etc

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

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

PATH=<your path>
Run Code Online (Sandbox Code Playgroud)

<并且>不应该被包括在内。一个例子是:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

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

Sys.setenv("<your path>")
Run Code Online (Sandbox Code Playgroud)

再次强调,不要包含“<”或“>”。一个例子是:

Sys.setenv("/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin")
Run Code Online (Sandbox Code Playgroud)

有多种方法可以获取和编辑 PATH 变量(例如,在末尾或开头添加新路径)。如果环境变量尚不存在和/或不包含您想要的内容,您还可以使用设置环境变量的策略。我开始更喜欢简单地设置我的路径,然后直接对其进行编码。

最后一点要注意的是,如果您R从命令行界面运行,环境变量可能会从您的 shell 继承。RStudio 也有自己的启动顺序,并且可能会修改 PATH 变量的末尾。它应该按照 Rprofile 或 Renviron 文件中定义的方式启动。R 控制台应用程序本身对系统环境变量的怪癖最少,并且应该完全按照 Rprofile 或 Renviron 文件设置的方式接受您的路径。


Jef*_*erg 0

编辑:我应该在发布之前进行测试。我下面描述的方法不起作用。(对我自己的答案投反对票是一件奇怪的事情。)

在我的系统(macOS、bash)上,R.app 没有$PATH从我的 shell 环境或.profile. 然而 RStudio 正在接受它。我不理解不同的行为。

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

.Renviron如果您在您的目录中创建一个名为的文件,其中包含以下行

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

(当然还有您需要的路径元素)这应该为您提供一致的行为。

缺点是您需要手动维护它。我想您可以从生成该文件的其他启动脚本之一运行脚本.Renviron。但无论哪种方式,我认为这整个事情是一个解决方法,而不是真正理解 R 从哪里获取它的环境。