6

Mathematica ノートブックから環境変数を設定する必要があります。

Environment["VARIABLE"]

変数の値を与えます。しかし、変数を設定することも可能ですか?

4

3 に答える 3

4

(私の知る限り)組み込み関数はありませんが、単に使用できます

Run["set VAR=VALUE"]

また

!set VAR=VALUE

代わりは。

編集: RunおよびRunThroughコマンドのドキュメントを参照してください。

于 2009-05-13T23:03:07.423 に答える
4

RunまたはRunThroughで設定された環境変数はMathematicaカーネル自体には影響しませんが、同じRunまたはRunThroughコマンド内で起動されたプロセスにのみ表示されます。

環境変数がMathematicaカーネル プロセスに表示される必要がある場合は、 Is there a way to change another process's environment variables?に対する受け入れられた回答で説明されている 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 コマンドが stdin の gdb に送信され、 putenvcall (int) putenv ("var=value")で環境変数が設定されます。

警告: Mac OS X では、 Xcode 開発者ツールがインストールされている場合にのみ gdb を使用できます。

于 2011-05-14T17:14:58.420 に答える
2

外部コマンドを正しく実行する前に、これを行うと思いますか? 代わりに、evn 変数を一時的に設定する "VARNAME=value; your_original_external_command" を実行してみませんか。

于 2009-05-13T22:48:17.103 に答える