Я только что получил новый 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