当您从命令行启动 R 然后运行system(echo $PATH)
时,您将从命令行会话继承 Bash 环境。当您从 Mac 上的 Dock 或 Finder 或 Ubuntu 中的系统应用程序而不是从命令行启动 RStudio 时,RStudio 不会从您的/.bashrc
. 相反,它将从系统范围的设置中获取环境变量。它如何找到这些系统设置将取决于操作系统。
Ubuntu
请参阅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
苹果电脑
系统范围的环境变量由 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>
然后,您必须加载该文件:
launchctl load ~/Library/LaunchAgents/com.username.envvariables.plist
您可能需要重新启动 Finder:
killall -KILL Dock
然后重新启动 RStudio。