Я прочитал этот пост и этот пост и этот пост, но решения там (в первую очередь, использование полного пути к Rscript) не решили мою проблему:
Я установил последнюю версию R на сервер в свой локальный каталог (поскольку общесистемный R устарел) и добавил этот каталог в переменную среды PATH в .bashrc
. Из командной строки получаю следующее:
$ R --version
R version 3.4.3 (2017-11-30) -- "Kite-Eating Tree"
А также
$ Rscript --version
R scripting front-end version 3.4.3 (2017-11-30)
Чего я и ожидаю. Однако, если у меня есть следующий скрипт (с именем test.r
):
#!/path/to/my/local/bin/Rscript
sessionInfo()$R.version$version.string
Я получаю это:
$ ./test.r
[1] "R version 3.3.2 (2016-10-31)"
Какая другая версия.
(Кстати, когда я использую библиотеки parallel
и doParallel
, очевидно, что порожденные процессы также используют более старую версию R. Я подозреваю, что корень этих проблем один и тот же.)
Мне кажется, что .bashrc — неподходящее место для установки PATH для этого сценария. Как правильно это сделать?
Заранее спасибо!
ИЗМЕНИТЬ
Этот сценарий возник в кластере HPC, и я обнаружил, что module unload R
удалил старую версию R из моей среды. Однако даже с загруженным старым модулем R моя локальная версия по-прежнему была первой в моем PATH, как установлено .bashrc. Таким образом, среда, в которой R вызывается Rscript (или, если на то пошло, #!/usr/bin/env Rscript
), не должна искать в моем .bashrc. Меня это не шокирует, но я до сих пор не знаю, как правильно установить PATH, чтобы описанное выше работало как ожидалось.