2012-09-06 19 views
9

मैं ईसी 2 स्पॉट उदाहरणों पर आर चला रहा हूं और मुझे स्क्रिप्ट चलाने के बाद उदाहरण को समाप्त करने और स्पॉट अनुरोध को रद्द करने की आवश्यकता है।मैं आर को अपने पर्यावरण चर को कैसे पढ़ सकता हूं?

कि मैं /.bashrc में एक पर्यावरण चर में "अनुरोध आईडी" की स्थापना की है और मेरी योजना बस स्क्रिप्ट को एक बार आर में निम्न कोड कहते थे के लिए तैयार

system("ec2-cancel-spot-instance-requests $SIR") 

मुद्दा मैं कर रहा हूँ है जब मैं बाहरी आर से env टाइप करता हूं तो यह वही पर्यावरणीय चर "देख" नहीं रहा है, इस प्रकार कमांड काम नहीं कर रहा है।

मैंने जांच की है और यदि मैंने /etc/environment पर अपने पर्यावरण चर सेट किए हैं तो आर उन चर को देखने में सक्षम है, लेकिन यहां दूसरी समस्या है। उन चरों गतिशील (उदाहरण के आईडी और अनुरोध आईडी हर बार एक स्थान उदाहरण बनाई गई है अलग है) हैं, मैं उन्हें के रूप में बनाने के लिए एक स्क्रिप्ट चला रहा हूँ:

export SIR=`cat /etc/ec2_instance_spot_id.txt` 

कि फ़ाइल कहाँ गतिशील होता है आईडी

तो, मैं /etc/environment में "गतिशील" पर्यावरणीय चर कैसे डाल सकता हूं? या, मैं /.bashrc पर पर्यावरण चर को कैसे पढ़ सकता हूं?

सही दिशा में कोई भी युक्ति बहुत सराहना की जाएगी!

+0

के साथ इस चर का उपयोग करने के लिए सक्षम हो जाएगा मुझे लगता है कि चर पाया ~/.profile में Sys.getenv() से पहुंचा जा सकता था, लेकिन ~/.bashrc से नहीं। मुझे 'स्रोत ~/.profile' करना था, फिर टर्मिनल से' आर 'को नए चर जोड़ने के बाद इसे काम करना पड़ा। – wordsforthewise

उत्तर

9

आप Sys.getenv()Sys.getenv("PATH") में चाहते हैं, कहें।

या अपने उदाहरण के लिए,

SIR <- Sys.getenv("SIR") 
system(paste("ec2-cancel-spot-instance-requests", SIR)) 

के रूप में की कोशिश स्टार्टअप पर चर स्थापित करने के लिए, help(Startup) देखने के बारे में ~/.Renvironment आदि

+0

आपके समय के लिए बहुत बहुत धन्यवाद। मेरे पास यह मुद्दा यह है कि जब मैं उदाहरण के लिए करता हूं तो नाम (एस <- Sys.getenv()) 'तब 'एसआईआर' नहीं होता है, जब मैं' एसआईआर <- Sys.getenv ("एसआईआर") 'वहाँ करता हूं एसआईआर में कुछ भी नहीं है, लेकिन जब मैं आर से बाहर निकलता हूं और मैं 'env' करता हूं कि पर्यावरण चर की सूची पूरी तरह से अलग होती है जब मैं' Sys.getenv() 'और वहां मैं एसआईआर और अन्य लोगों को देख सकता हूं। मैं 'रेनवायरमेंट' पर एक नज़र डालेगा, बहुत बहुत धन्यवाद। – JordanBelf

+0

ठीक है, यह शर्मनाक है। मैं आर के भीतर पर्यावरण चर को क्यों पढ़ना चाहता हूं अगर मैंने अनुरोध आईडी और इंस्टेंस आईडी के साथ पहले से ही 2 फाइलें बनाई हैं? मैं बस उन फाइलों का मूल्य प्राप्त कर सकता हूं और अपना काम कर सकता हूं ... यह समझाता नहीं है कि आर उसी पर्यावरण चर को क्यों नहीं देख रहा था जैसा कि मैंने देखा था जब मैंने आर छोड़ दिया था, लेकिन मुझे जा रहा है!प्रेरणा के लिए धन्यवाद! – JordanBelf

+4

मैंने 'Sys.setenv()' का उपयोग कर यह काम किया और मूल रूप से आर से आर के बाहर अपने पर्यावरण चरों की प्रतिलिपि बना दी। हालांकि यह मेरी स्क्रिप्ट का काम करता है, मेरी इच्छा है कि मैं समझ सकूं कि विभिन्न पर्यावरणीय चर के पूरे सेट क्यों हैं – JordanBelf

6

Sys.getenv() आप वर्तमान वातावरण में सूचीबद्ध सभी चर को देखने का उपयोग करना सीखने के लिए।

हालांकि, वे आपके वर्तमान खोल में उपयोग किए गए लोगों से अलग हैं, उदाहरण के लिए .profile में निर्दिष्ट।

आर के लिए चर सेट करने के लिए अपने घर निर्देशिका में .Renviron फ़ाइल बनाने और वहाँ

MYDIRECTORY="/home/wherever" 

आर पुनरारंभ करने के बाद लिखना आप

Sys.getenv("MYDIRECTORY")