为什么编织程序代码块中的$ PATH与Terminal中的$ PATH不同?

时间:2018-12-31 11:24:50

标签: r bash r-markdown knitr

在编织BASH块中回显的$ PATH缺少了我的MACOS终端中$ PATH的某些路径。 这是为什么?有什么方法可以在knitr中的bash引擎中设置与终端相同的默认$ PATH?

1-编织:

```{bash}
echo $PATH
```

/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ Applications / VMware Fusion.app/Contents/Public:/Library/TeX/texbin:/opt/X11/ bin:/ opt / local /

2-在终端中:

echo $PATH

/opt/local/bin:/opt/local/sbin:/Users/xxx/miniconda3/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / mysql / bin:/ Applications / vcflib / bin:/ Applications / bedtools

1 个答案:

答案 0 :(得分:2)

那是因为在OSX / MacOS中通过GUI启动外壳程序时,.profile(以及.bash_profile.bashrc)没有运行。本质上是login shell and a non-login shell

的区别

在终端中,运行cat ~/.profile来查看.profile包含的内容。不同的用户会有所不同,您可以自由地根据自己的喜好进行修改。

有多种方法可以使R中的$PATH.profile匹配。最直接的方法是使用Sys.setenv(PATH=...)添加路径,但这仅适用于每个会话,当您重新启动R时它将被重置。一个更永久的选择是将Sys.setenv(PATH=...)放在.Rprofile中,或者在PATH中定义.Renviron