2009-05-12 11 views

Respuesta

2

Supongo que vas a hacer esto antes de intentar ejecutar un comando externo ¿no? ¿Por qué no simplemente ejecuta "VARNAME = value; your_original_external_command" que establecerá temporalmente la variable evn.

4

No hay Está construido en la función (que yo sepa), pero sólo se puede utilizar

Run["set VAR=VALUE"] 

o

!set VAR=VALUE 

lugar.

Editar: Deberá ver la documentación para los comandos Run y RunThrough.

+0

"set" no parece funcionar, pero "export" lo hace (estoy usando bash en Mac OS X). : ~ cls $ export VAR = VALOR : ~ cls $ echo $ VAR VALOR Sin embargo, no funciona desde Mathematica. En [15]: = Ejecutar [ "VAR exportación = VALOR"] de salida [15] = 0 En [16]: = Medio Ambiente [ "VAR"] de salida [16] = $ Falló Incluso si configuro la variable desde la línea de comando, no se puede recuperar con Entorno []. –

3

variables de entorno definidas con Run o RunThrough no afectará a la Mathematica kernel sí pero esto sólo serán visibles para los procesos que se ejecutan dentro del mismo comando Run o RunThrough.

Si la variable de entorno debe ser visible para el proceso kernel Mathematica, el hack basado GDB se describe en la respuesta aceptada a Is there a way to change another process's environment variables? se puede utilizar en 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 ]] 
] 

El MathematicaPut El comando se usa para iniciar gdb y hacer que se una al proceso de núcleo Mathematica. El comando gdb call (int) putenv ("var=value") se envía a gdb en stdin para configurar la variable de entorno con putenv.

Advertencia: en Mac OS X gdb solo está disponible si está instalado Xcode developer tools.

Cuestiones relacionadas