Bash-Skript – Fehler „Rscript: Befehl nicht gefunden“

Bash-Skript – Fehler „Rscript: Befehl nicht gefunden“

Ich versuche, das folgende Bash-Skript unter Linux auszuführen, erhalte jedoch die folgende Fehlermeldung line 31: Rscript: command not found. Können Sie mir bitte einen Rat geben, wo ich falsch liege?

#!/bin/bash
#PBS -S /bin/bash
#PBS -N garunsmodel
#PBS -l mem=10g
#PBS -l walltime=02:00:00
#PBS -A improvingherds
#PBS -m ae


nodeDir=`mktemp -d /tmp/phuong.XXXXX`

cp -r /group/dairy/phuongho/garuns $nodeDir

cd $nodeDir

cd garuns
module load gcc vle // this is to load vle platform
rm -rf out
mkdir out

#In garuns.vpz. The output file path has to be changed.
#to an absolute path that's available on the node the script is running.

XXX=`pwd`
sed -i "s|/group/dairy/phuongho/garuns/out|$XXX/out/|" exp/garuns.vpz
Rscript  R/repetability.R

DATE=`date +%Y%m%d-%H%M%S`
mkdir "/group/dairy/phuongho/job.$DATE"

cp -r out  "/group/dairy/phuongho/job.$DATE"

Als ich versuchte, manuell darauf zuzugreifen, um tmp/phuong.XXXXX/garunsR auszuführen, funktionierte es einwandfrei.

Antwort1

Wenn R bereits installiert ist, kann es sein, dass die PATHVariable das falsche ? aufnimmt RScript. Überprüfen Sie mitwhich RScript

In diesem Fall versuchen Sie export PATH=/path/to/alternate/r/bin:$PATH Oder versuchen Sie es mit Brute-Force, indem Sie beim Verweisen den absoluten Pfad angeben RScript, zB ~/R-3.2.5_patched/bin/RScript/R/repetability.R

Antwort2

Sie müssen R installieren

Zum Beispiel unter Ubuntu:

sudo apt-get install r-base-core

Dann Rscriptwird der Befehl in der Befehlszeile erkannt.

Ich habe das gemacht und es hat funktioniert, aber seien Sie sich bewusst, dass die Installation ziemlich umfangreich war und Hunderte von Abhängigkeiten installiert hat. Die Installation hat ein paar Minuten gedauert.

Antwort3

Dies sieht aus wie ein Skript, das über etwas wie SLURM an einen Computercluster gesendet wird. Sie sollten mit Ihrem Systemadministrator sprechen und fragen, ob R auf dem Cluster installiert ist und wenn ja, wie Sie den Zugriff darauf in Ihrem Skript aktivieren.

Auf den Clustern, auf die ich Zugriff habe, muss einige Software mit einem Befehl geladen werden module load somesoftware/version, der die zum Ausführen der Software erforderlichen Umgebungsvariablen aktualisiert/festlegt.

Antwort4

Ich habe die gleiche Fehlermeldung erhalten, aber aus einem anderen Grund. Ich poste sie hier, da die Leute wie ich auch hier landen werden.

Überprüfen Sie, dass Ihre erste Zeile lautet #!/bin/bash(was nicht Ihr Problem ist) und nicht #!/bin/sh, sonst werden einige Befehle wie module load <>nicht ausgeführt.

verwandte Informationen