我刚刚在工作场所买了一台装有 macOS Catalina 的新 M1 Mac,在从命令行运行 R 时遇到了问题(实际上是从 Makefile 运行)。我对 shell 还比较陌生,所以可能我遗漏了一些东西。
我想使用 Makefile 运行 R 项目。我使用下载的软件包安装了 R 3.6,虽然我R
在终端中输入时它确实运行,但当我编写调用的 Makefile 时它却不运行R CMD BATCH scr.R
。
我唯一知道的是它似乎使用了不同的 shell。虽然终端使用 zsh(echo ${SHELL}
给出/bin/zsh
),但当我通过 Makefile 运行它时,它使用/bin/sh
指向 bash: sh --version
> 的GNU bash, version 3.2.57(1)-release ...
。
我尝试使用 homebrew 安装 R,并且确实有效,但这不是我的理想解决方案,因为 a) 我想要 R 3.6,而在 homebrew 中获取以前的版本有点令人头疼,并且 b) 我不想安装两次软件包。
我也尝试过改变/bin/sh
符号链接使其指向/bin/zsh
,但是也不起作用。
即使我SHELL := zsh
在 Makefile 的开头添加,仍然会收到类似的错误:zsh:1: command not found: R.
所以我的问题是:这里到底发生了什么?为什么使用终端时得到的输出与通过 Make 调用命令时得到的输出不同?我该如何解决这个问题?
谢谢。
PS 我忘了提一下。由于我为 添加了别名,因此 CRAN 的“常规” R 安装在终端上有效.zshrc
。但使用 Make 运行的 shell 似乎无法读取此配置文件。
答案1
仅供参考,我通过将 R 家庭住址(输入 找到)添加到 PATH 中解决了R.home()
这个R
问题。这应该有效:
sudo echo "/Library/Frameworks/R.framework/Resources" >> /etc/paths