我需要从Mathematica笔记本中设置环境变量。
Environment["VARIABLE"]
给出变量的值。但是也可以设置一个变量吗?
答案 0 :(得分:4)
答案 1 :(得分:3)
使用Run或RunThrough设置的环境变量不会影响 Mathematica 内核本身,但仅对在同一Run
内启动的进程可见或RunThrough
命令。
如果 Mathematica 内核进程可以看到环境变量,则可以在Mac OS X下使用已接受的Is there a way to change another process's environment variables?答案中描述的基于gdb的hack:
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")
发送到stdin上的gdb,以使用putenv设置环境变量。
警告:在Mac OS X下,gdb仅在安装Xcode developer tools时可用。
答案 2 :(得分:2)
我假设您在尝试运行外部命令之前要执行此操作吗? 为什么不运行“VARNAME = value; your_original_external_command” 这会暂时设置evn变量。