6

我需要从 Mathematica 笔记本设置环境变量。

Environment["VARIABLE"]

给出变量的值。但是也可以设置变量吗?

4

3 回答 3

4

没有内置功能(据我所知),但您可以使用

Run["set VAR=VALUE"]

或者

!set VAR=VALUE

反而。

编辑:您将希望查看RunRunThrough命令的文档。

于 2009-05-13T23:03:07.423 回答
4

使用RunRunThrough设置的环境变量不会影响Mathematica内核本身,但只会对在同一RunRunThrough命令中启动的进程可见。

如果环境变量应该对Mathematica内核进程可见,则在接受的答案中描述的基于 gdb 的 hack是否有办法更改另一个进程的环境变量?可以在 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 命令发送到 stdin 上的 gdb 以使用putenvcall (int) putenv ("var=value")设置环境变量。

警告:在 Mac OS X 下,gdb 仅在安装了Xcode 开发者工具后才可用。

于 2011-05-14T17:14:58.420 回答
2

我假设您要在尝试运行外部命令之前执行此操作,对吗?为什么不直接运行“VARNAME=value; your_original_external_command”,它将临时设置 evn 变量。

于 2009-05-13T22:48:17.103 回答