Мне нужно разделить конфигурационные переменные между различными программами R и Bash. Все они используют разные ресурсы, особенно базу данных GRASS.
Я начал с создания сценария bash, который устанавливает переменные оболочки, а затем запускает программу R. Таким образом, R не видит переменных оболочки:
$ cat testVars.R
Sys.getenv(c("WDIR","GDIR"))
$ cat testVars.sh
#!/bin/sh
WDIR="/Work/Project/"
GDIR=$WDIR"GRASSDATA"
Rscript testVars.R
$ ./testVars.sh
WDIR GDIR
"" ""
Затем я попытался использовать функцию readRenviron
в R, думая, что ее можно использовать для получения файла bash для настройки переменных. Однако это приводит к другой проблеме, R не может заменить и объединить переменные, как это делает bash:
$ cat testVars.R
readRenviron("./testVars.sh")
Sys.getenv(c("WDIR","GDIR"))
$ cat testVars.sh
#!/bin/sh
WDIR="/Work/Project/"
GDIR=$WDIR"GRASSDATA"
$ Rscript testVars.R
WDIR GDIR
"/Work/Project/" "$WDIRGRASSDATA"
YAML поддерживается в некоторой степени на обоих языках, но страдает от одинакового отсутствия средств замены и объединения . Например, с YAML мне нужно будет повторять рабочий каталог бесчисленное количество раз в файле конфигурации.
Итак, вот что я ищу: формат конфигурации, который может использоваться как R, так и bash, а также позволяет объединять переменные.