2013-12-18 2 views
4

В моей R сессии, я устанавливаю некоторые переменные окружения, используяДоступ к переменным окружения, установленные в R сессии из оболочки

Sys.setenv(BLAH="blah") 

При переключении на терминал (Ctrl-Z), а затем попытаться получить доступ к окружающей среде переменная, я вижу, что она не установлена.

echo $BLAH 

Вопрос заключается в том, где это переменная среды, что я устанавливаю от R, и если я хочу другой процесс, чтобы увидеть, как я могу получить к нему доступ?

ответ

6

Окружающая среда умирает с процессом.

Каждый процесс имеет свой собственный набор переменных окружения, унаследованных от родительского процесса. Когда вы создаете переменную окружения BLAH, вы создаете ее в среде выполняемого вами процесса R, но не в среде родительского процесса.

Если вам нужен другой процесс для доступа к этой переменной окружения, вам необходимо запустить процесс из R. Тогда дочерний процесс наследует BLAH. Эта документация Sys.setenv упоминает об этом:

Sys.setenv устанавливает переменные окружения (для других процессов, называемых внутри R или будущих вызовов Sys.getenv от этого процесса R).

Например:

Sys.setenv(BLAH="blah") 
system("echo $BLAH") 
# blah 
+0

В Windows вы должны использовать '% имяПеременной%', а не '$ variableName'. И 'system' дал мне ошибку, поэтому мне пришлось использовать' shell («echo% BLAH%») '. – dnlbrky

+0

Интересно. '? system' упоминает, что в Windows' system' запускает команду напрямую, а 'shell' запускает ее через оболочку. Не знал этого. – Peyton

Смежные вопросы