Ich habe gerade einen neuen M1-Mac mit macOS Catalina an meinem Arbeitsplatz bekommen und habe Probleme, wenn ich R über die Befehlszeile ausführe (eigentlich, wenn ich es über ein Makefile ausführe). Ich bin relativ neu in der Shell, daher übersehe ich hier wahrscheinlich etwas.
Ich möchte R-Projekte mithilfe eines Makefiles ausführen. Ich habe R 3.6 mithilfe eines heruntergeladenen Pakets installiert und es wird zwar ausgeführt, wenn ich etwas R
in das Terminal eingebe, aber nicht, wenn ich ein Makefile schreibe, das aufruft R CMD BATCH scr.R
.
Das einzige, was ich weiß, ist, dass es anscheinend unterschiedliche Shells verwendet. Während das Terminal zsh verwendet ( echo ${SHELL}
gibt /bin/zsh
), verwendet es, wenn ich es über ein Makefile ausführe, /bin/sh
, das auf bash verweist: sh --version
> GNU bash, version 3.2.57(1)-release ...
.
Ich habe versucht, R mit Homebrew zu installieren und es hat funktioniert, aber es ist nicht meine ideale Lösung, weil a) ich R 3.6 möchte und es ein bisschen mühsam ist, frühere Versionen in Homebrew zu bekommen und b) ich die Pakete nicht zweimal installieren möchte.
Ich habe auch versucht, den /bin/sh
symbolischen Link so zu ändern, dass er auf verweist /bin/zsh
, aber das hat auch nicht funktioniert.
Auch wenn ich SHELL := zsh
am Anfang des Makefiles hinzufüge, erhalte ich immer noch einen ähnlichen Fehler:zsh:1: command not found: R.
Meine Frage ist also: Was ist hier genau los? Warum erhalte ich bei Verwendung des Terminals eine andere Ausgabe als beim Aufruf der Befehle über ein Make? Und wie kann ich dies beheben?
Danke.
PS: Ich habe vergessen zu erwähnen. Die „normale“ R-Installation von CRAN funktioniert auf dem Terminal, weil ich einen Alias hinzugefügt habe .zshrc
. Aber die Shell, die mit Make läuft, scheint diese Konfigurationsdatei nicht zu lesen.
Antwort1
Nur zur Info: Ich habe das Problem gelöst, indem ich die R-Heimatadresse (die Sie finden, indem Sie eingeben) zum PATH hinzugefügt habe R.home()
. R
Das sollte funktionieren:
sudo echo "/Library/Frameworks/R.framework/Resources" >> /etc/paths