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/garuns
R auszuführen, funktionierte es einwandfrei.
Antwort1
Wenn R bereits installiert ist, kann es sein, dass die PATH
Variable 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 Rscript
wird 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.