我剛剛在工作場所購買了一台裝有 macOS Catalina 的新 M1 mac,從命令列運行 R 時(實際上是從 Makefile 運行 R 時)遇到了麻煩。我對 shell 比較陌生,所以這裡可能缺少一些東西。
我想使用 Makefile 運行 R 專案。我使用下載的軟體包安裝了 R 3.6,雖然當我R
在終端中鍵入時它確實運行,但當我編寫調用R CMD BATCH scr.R
.
我唯一知道的是它似乎使用了不同的外殼。雖然終端使用 zsh (echo ${SHELL}
給出/bin/zsh
),但當我透過 Makefile 運行它時,它使用/bin/sh
,它指向 bash: sh --version
> GNU bash, version 3.2.57(1)-release ...
。
我嘗試用自製軟體安裝 R,它確實有效,但這不是我理想的解決方案,因為 a) 我想要 R 3.6 並且在自製軟體中獲取以前的版本有點頭痛,b) 我不想安裝兩次軟體包。
我還嘗試更改/bin/sh
符號鏈接,使其指向/bin/zsh
,但它也不起作用。
即使我SHELL := zsh
在 Makefile 的開頭添加,我仍然會收到類似的錯誤:zsh:1: command not found: R.
所以我的問題是:這裡到底發生了什麼事?為什麼使用終端機時得到的輸出與透過 Make 呼叫指令時得到的輸出不同?我該如何解決這個問題?
謝謝。
PS我忘了提。 CRAN 的“正常”R 安裝可以在終端上運行,因為我向.zshrc
.但是使用 Make 運行的 shell 似乎無法讀取此設定檔。
答案1
僅供參考,我透過將 R 主位址(找到它輸入)新增R.home()
至R
PATH 來解決。這應該有效:
sudo echo "/Library/Frameworks/R.framework/Resources" >> /etc/paths