Jos*_*ley 11 path-variables r rstudio
可能重复的问题,但我不知道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?
Lin*_*len 16
从命令行启动R然后运行时system(echo $PATH),您将从命令行会话继承Bash环境.当您从Mac上的Dock或Finder或Ubuntu中的系统应用程序启动RStudio时,而不是从命令行启动RStudio时,RStudio不会从您的环境中获取其环境/.bashrc.相反,它将从系统范围的设置中获取环境变量.如何找到这些系统设置将取决于操作系统.
请参阅Ubuntu中对环境变量的这种解释,尤其是有关桌面应用程序的部分.
根据这个解释:
您可以通过编辑其.desktop文件将环境变量添加到应用程序.例如,要使用环境变量APPMENU_DISPLAY_BOTH = 1运行"digiKam",请找到相应的digikam.desktop文件,并通过env命令将变量的设置添加到条目"Exec":
RStudio .desktop文件将在~/.local/share/applications/或/usr/share/applications/(很可能是后者).编辑该文件以包含此行:
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)
系统范围的环境变量由Launch Agent设置,而不是由Bash设置.究竟如何为从Finder启动的应用程序设置环境变量将取决于您的Mac OS X版本.这个答案可能会有所帮助.
我这样做的方法是添加一个文件,~/Library/LaunchAgents/com.username.envvariables.plist包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.username.envvariables</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>
launchctl setenv 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
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
然后,您必须加载该文件:
launchctl load ~/Library/LaunchAgents/com.username.envvariables.plist
Run Code Online (Sandbox Code Playgroud)
您可能必须重新启动Finder:
killall -KILL Dock
Run Code Online (Sandbox Code Playgroud)
然后重启RStudio.
小智 5
我遇到了同样的问题。我不是林肯的答案,而是通过以下方式在 RStudio 控制台中手动设置了正确的环境
Sys.setenv(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)
在这种情况下。
R 正在使用的 PATH 也可以通过以下方式在控制台中检查
Sys.getenv()
Run Code Online (Sandbox Code Playgroud)