2009-05-12 16 views

उत्तर

2

मुझे लगता है कि आप बाहरी कमांड को चलाने का प्रयास करने से पहले ऐसा करने जा रहे हैं? क्यों न केवल "VARNAME = value; your_original_external_command" चलाएं जो अस्थायी रूप से evn चर सेट करेगा।

4

कोई समारोह में बनाया गया है (मेरी जानकारी के लिए), लेकिन इसके बजाय आप बस

Run["set VAR=VALUE"] 

या

!set VAR=VALUE 

उपयोग कर सकते हैं।

संपादित करें: आप Run और RunThrough आदेशों के लिए दस्तावेज़ देखना चाहते हैं।

+0

"सेट" काम नहीं कर रहा है, लेकिन "निर्यात" करता है (मैं मैक ओएस एक्स पर बैश का उपयोग कर रहा हूं)। : ~ सीएलएस $ निर्यात VAR = VALUE : ~ cls $ echo $ VAR VALUE हालांकि, यह गणित से काम नहीं करता है। में [15]: = भागो [ "निर्यात var = मूल्य"] बाहर [15] = 0 [16] में: = पर्यावरण [ "वीएआर"] बाहर [16] = $ विफल भले ही मैं कमांड लाइन से चर सेट करता हूं, इसे पर्यावरण [] के साथ पुनर्प्राप्त नहीं किया जा सकता है। –

3

पर्यावरण चर Run या RunThrough के साथ सेट अप मेथेमेटिका गिरी खुद को प्रभावित नहीं करेगा, लेकिन केवल एक ही Run या RunThrough आदेश के भीतर शुरू की प्रक्रियाओं के लिए दिखाई जाएगी।

तो वातावरण चर मेथेमेटिका गिरी प्रक्रिया को दिखाई देने चाहिए, Is there a way to change another process's environment variables? को स्वीकार कर लिया जवाब में वर्णित gdb आधारित हैक मैक ओएस एक्स के तहत इस्तेमाल किया जा सकता:

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 लॉन्च करने के लिए कमांड का उपयोग किया जाता है और इसे गणित कर्नेल प्रक्रिया में संलग्न करता है। Gdb कमांड call (int) putenv ("var=value") को putenv के साथ पर्यावरण चर सेट अप करने के लिए stdin पर gdb पर भेजा जाता है।

चेतावनी: मैक ओएस एक्स जीडीबी के तहत केवल तभी उपलब्ध है जब Xcode developer tools स्थापित हो।

संबंधित मुद्दे