2009-05-12 11 views

답변

2

외부 명령을 실행하기 전에이 작업을 수행한다고 가정합니다. 대신 evn 변수를 임시로 설정하는 "VARNAME = value; your_original_external_command" 을 실행하십시오.

4

아무 (내 지식) 기능을 내장하지 않습니다,하지만 당신은 대신

!set VAR=VALUE 

Run["set VAR=VALUE"] 

또는

를 사용할 수 있습니다.

편집 : RunRunThrough 명령에 대한 설명서를보고 싶을 것입니다. Run 또는 RunThrough로 설정

+0

"set"은 작동하지 않지만 "export"는 수행합니다 (Mac OS X에서는 bash를 사용하고 있습니다). : ~ cls $ export VAR = VALUE ~ ~ cls $ echo $ VAR 값 그러나 Mathematica에서는 작동하지 않습니다. 에서 [15] = 실행 [ "수출 VAR = VALUE"] 아웃 [15] = [16] 0 = 환경 [ "VAR"] 아웃 [16] = $ 실패 명령 행에서 변수를 설정하더라도 환경 []으로 검색 할 수 없습니다. –

3

환경 변수는 티카 커널 자체에 영향을 미치지 않습니다 만 같은 Run 또는 RunThrough 명령에서 시작 프로세스에 볼 수 있습니다.

환경 변수는 티카 커널 프로세스에 표시되어야 하는지를

Is there a way to change another process's environment variables?으로 허용 대답에 기재된 GDB 기반 해킹 맥 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 ]] 
] 

티카Put 커맨드는 gdb를 시작하고 커널을 Mathematica 커널 프로세스에 첨부합니다. 그런 다음 gdb 명령 call (int) putenv ("var=value")을 stdin의 gdb로 전송하여 환경 변수를 putenv으로 설정합니다.

경고 : Mac OS X에서 gdb는 Xcode developer tools이 설치된 경우에만 사용할 수 있습니다.