У меня есть следующий скрипт bash, пытаюсь запустить его в Linux, но получаю сообщение об ошибке line 31: Rscript: command not found
. Можете ли вы дать мне совет, где я ошибаюсь?
#!/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"
Когда я попытался вручную получить доступ к tmp/phuong.XXXXX/garuns
R, все прошло нормально.
решение1
Если R уже установлен, может ли быть так, что PATH
переменная выбирает не тот RScript
? Проверьте сwhich RScript
В этом случае попробуйте
export PATH=/path/to/alternate/r/bin:$PATH
или попробуйте применить метод полного перебора, указав абсолютный путь при ссылке RScript
, например
~/R-3.2.5_patched/bin/RScript/R/repetability.R
решение2
Вам необходимо установить R
Например, в Ubuntu:
sudo apt-get install r-base-core
Тогда Rscript
команда будет распознана в командной строке.
Я сделал это, и это сработало, но учтите, что установка была довольно массивной с сотнями установленных зависимостей. Установка заняла несколько минут.
решение3
Это похоже на скрипт, который отправляется в вычислительный кластер через что-то вроде SLURM. Вам следует поговорить с администратором вашей системы и спросить, установлен ли R на кластере, и если да, как включить доступ к нему в вашем скрипте.
На кластерах, к которым у меня есть доступ, некоторое программное обеспечение необходимо загрузить с помощью module load somesoftware/version
команды, которая обновляет/устанавливает переменные среды, необходимые для запуска программного обеспечения.
решение4
Я получил то же самое сообщение об ошибке, но по другой причине. Выкладываю его здесь, так как люди будут попадать сюда, как и я.
Проверьте, что ваша первая строка — #!/bin/bash
(это не ваша проблема), а не #!/bin/sh
, иначе некоторые команды, например , module load <>
не будут выполняться.