मैं अपने रूबी कार्यक्रम के भीतर से कुछ तीसरे पक्ष की बैश स्क्रिप्ट चलाने की कोशिश कर रहा हूं।रूबी स्क्रिप्ट में कमांड शैल के लिए मैं पर्यावरण चर कैसे स्रोत करूं?
इससे पहले कि मैं उन्हें चला सकूं, उन्हें मुझे एक फ़ाइल स्रोत करने की आवश्यकता है। कमांड लाइन पर यह सब ठीक काम करता है लेकिन रूबी के भीतर यह काम नहीं करता है। मुझे पता चला है कि सिस्टम कमांड एक नई बाल खोल प्रक्रिया खोलेंगे और इसमें कोई सोर्सिंग किया जाएगा और रूबी स्क्रिप्ट चलाने वाले पैरेंट शैल प्रक्रिया से नहीं देखा जा सकता है। जब सिस्टम कॉल समाप्त होता है, तो बाल खोल भी मारे जाते हैं।
मैं इस समस्या को कैसे प्राप्त करूं?
बीमार कोशिश करें। तो क्या इसका मतलब है कि स्क्रिप्ट अपनी युक्त शेल प्रक्रिया के पर्यावरण चर को बदल सकती है और इसलिए किसी और बच्चे की प्रक्रिया को सिस्टम कॉल के माध्यम से विरासत के साथ बनाया गया है? – robodisco
नहीं, लेकिन रूबी स्क्रिप्ट से निष्पादित कोई भी प्रक्रिया स्क्रिप्ट के चर का वारिस करेगी। – Geo
उपरोक्त एक धागे के लिए काम करता है और मैं नीचे करता हूं। लेकिन मेरे पास एक सवाल है कि मैं आईओ.पोपेन के साथ पर्यावरण की विलय वाली कॉप का उपयोग कैसे करूं? किसी भी तरह यह काम नहीं लग रहा है। "सिस्टम" के साथ मैं कर सकता हूं: # ... नया "पथ" बनाएं subEnv = हैश.न्यू; subEnv.merge! (ENV); # पुराने वातावरण की प्रतिलिपि subEnv ['पथ'] = पथ; प्रतिलिपि सिस्टम (subEnv, कमांडलाइन) में नए मान सेट करें; – peterk