Задание переменных среды в Mathematica - PullRequest
5 голосов
/ 12 мая 2009

Мне нужно установить переменную среды из записной книжки Mathematica.

Environment["VARIABLE"]

дает значение переменной. Но можно ли установить переменную тоже?

Ответы [ 3 ]

4 голосов
/ 14 мая 2009

Там нет встроенной функции (насколько мне известно), но вы можете просто использовать

Run["set VAR=VALUE"]

или

!set VAR=VALUE

вместо.

Изменить: вам нужно просмотреть документацию для команд Выполнить и Выполнить через .

3 голосов
/ 14 мая 2011

Переменные среды, настроенные с помощью Run или RunThrough , не влияют на само ядро ​​ Mathematica , но будут видны только процессам, запущенным в том же Run или RunThrough команда.

Если переменная окружения должна быть видимой для процесса ядра Mathematica , хак на основе gdb, описанный в принятом ответе на Есть ли способ изменить переменные среды другого процесса? может использоваться под Mac OS X:

SetEnvironment[var_String, value_String] := Module[{valueEscaped, cmd},
    valueEscaped = StringTake[ToString[CForm[value]], {2, -2}];
    cmd = "call (int) putenv (\"" <> var <> "=" <> valueEscaped <> "\")";
    Put[OutputForm[cmd], "!gdb -n \"" <> First[$CommandLine] <> "\" " <> ToString[$ProcessID ]]
]

Команда Mathematica Put используется для запуска GDB и его присоединения к процессу ядра Mathematica . Команда gdb call (int) putenv ("var=value") затем отправляется в gdb на stdin для установки переменной окружения с помощью putenv .

Предупреждение: в Mac OS X GDB доступен только в том случае, если установлены инструменты разработчика Xcode .

2 голосов
/ 14 мая 2009

Я предполагаю, что вы собираетесь сделать это, прежде чем пытаться выполнить внешнюю команду, верно? Почему бы вместо этого просто запустить "VARNAME = value; your_original_external_command" это временно установит переменную evn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...