職場に macOS Catalina を搭載した新しい M1 Mac が届いたのですが、コマンドラインから R を実行するときに問題が発生しています (実際には Makefile から実行するとき)。シェルの使用経験が浅いので、何か見落としていることがあるかもしれません。
Makefile を使用して R プロジェクトを実行したいです。ダウンロードしたパッケージを使用して R 3.6 をインストールしましたが、R
ターミナルに入力すると実行されますが、 を呼び出す Makefile を記述すると実行されませんR CMD BATCH scr.R
。
私が知っている唯一のことは、異なるシェルを使用しているように見えるということです。ターミナルは zsh (echo ${SHELL}
を提供します/bin/zsh
) を使用しますが、Makefile を実行すると、 bash: >/bin/sh
を指す を使用します。sh --version
GNU bash, version 3.2.57(1)-release ...
私は homebrew で R をインストールしようとしましたが、うまくいきました。しかし、これは私にとって理想的な解決策ではありません。なぜなら、a) R 3.6 が必要で、homebrew で以前のバージョンを入手するのは少し面倒だからです。b) パッケージを 2 回インストールしたくないからです。
/bin/sh
また、を指すようにシンボリックリンクを変更してみましたが/bin/zsh
、それでも機能しませんでした。
SHELL := zsh
Makefile の先頭に追加しても、同様のエラーが発生します:zsh:1: command not found: R.
そこで私の質問は、ここで一体何が起こっているのかということです。ターミナルを使用するときと、Make 経由でコマンドを呼び出すときとで出力が異なるのはなぜでしょうか。どうすればこれを修正できるでしょうか。
ありがとう。
PS 言い忘れていました。CRAN からの「通常の」R インストールは、 にエイリアスを追加したため、ターミナルで動作します.zshrc
。ただし、Make で実行されるシェルはこの構成ファイルを読み取らないようです。
答え1
参考までに、R ホーム アドレス ( と入力して見つけてくださいR.home()
)R
を PATH に追加することで解決しました。これで動作するはずです:
sudo echo "/Library/Frameworks/R.framework/Resources" >> /etc/paths