R и shell в macOS Catalina

R и shell в macOS Catalina

Я только что получил новый M1 Mac с macOS Catalina на работе, и у меня возникли проблемы при запуске R из командной строки (на самом деле, при запуске из Makefile). Я относительно новичок в оболочке, так что, возможно, я что-то упускаю.

Я хочу запустить проекты R с помощью Makefile. Я установил R 3.6 с помощью загруженного пакета, и хотя он запускается, когда я печатаю Rв Терминале, он не запускается, когда я пишу Makefile, который вызывает 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 с помощью Homebrew, и это сработало, но это не идеальное решение, потому что а) мне нужен R 3.6, а получение предыдущих версий с помощью Homebrew — это немного утомительно, и б) я не хочу устанавливать пакеты дважды.

Я также попробовал изменить /bin/shсимволическую ссылку так, чтобы она указывала на /bin/zsh, но это тоже не сработало.

Даже если я добавляю SHELL := zshв начало Makefile, я все равно получаю похожую ошибку:zsh:1: command not found: R.

Итак, мой вопрос: что именно здесь происходит? Почему при использовании Терминала я получаю другой вывод, чем при вызове команд через Make? И как это исправить?

Спасибо.

PS Забыл упомянуть. "Обычная" установка R из CRAN работает на Терминале, потому что я добавил псевдоним к .zshrc. Но оболочка, которая запускается с Make, похоже, не читает этот файл конфигурации.

решение1

Просто к вашему сведению, я решил проблему, добавив домашний адрес R (его можно найти, введя R.home()) Rв PATH. Это должно сработать:

sudo echo "/Library/Frameworks/R.framework/Resources" >> /etc/paths

Связанный контент