निष्पादन के बिना एक ही सत्र में स्क्रिप्ट कैसे चलाएं?


0

मुझे अपनी परियोजना में स्थापित करने के लिए स्क्रिप्ट नीचे दी गई है: -

#! /bin/zsh

source ~/.zshrc
crld #alias for Project base
cd Kenneth_Love/survivalguide
workon kenneth_tutorial

यह स्क्रिप्ट काम करती है लेकिन मुझे virtualenv में नहीं छोड़ती है (उपनाम ठीक से सेट है)

Virtualenv जैसा कि नाम से पता चलता है कि virtualenv जो पर्यावरण को अलग-अलग प्रबंधनीय रखने के लिए उपयोग किया जाता है और इसलिए यह एक दूसरे के साथ हस्तक्षेप नहीं करता है उदाहरण के लिए आप कहीं पैकेज का x संस्करण चाहते हैं और दूसरे प्रोजेक्ट के लिए आप Y चाहते हैं, इसलिए यह आसान बनाता है। स्क्रिप्ट कमांड के ऊपर दौड़ना दोहराव वाला काम है, लेकिन यह स्क्रिप्ट अलग-अलग सत्रों में चलती है और फिर बाहर निकल जाती है। मैं चाहता हूं कि यह उसी शेल एनवी पर चले जहां मैं इस स्क्रिप्ट को बुला रहा हूं।


virtualenvइस समुदाय में अक्सर चर्चा का विषय नहीं प्रतीत होता है। क्या आप संक्षेप में बता सकते हैं कि यह क्या है, और अधिक विशेष रूप से वर्णन करें कि स्क्रिप्ट क्या करती है और क्या नहीं करती है (आप क्या करना चाहते हैं?), और आप किस उपनाम के बारे में बात कर रहे हैं? कृपया टिप्पणियों में प्रतिक्रिया न दें; इसे स्पष्ट और अधिक पूर्ण बनाने के लिए अपने प्रश्न को संपादित करें।
जी-मैन

जवाबों:


1

कुछ शेल कमांड (जैसे cd) वर्तमान शेल और उसके बच्चे / अवरोही प्रक्रियाओं को प्रभावित करते हैं, लेकिन मूल शेल को प्रभावित नहीं कर सकते हैं। जब आप एक स्क्रिप्ट को एक साधारण कमांड (जैसे, scriptname.sh या ) के रूप में चलाते हैं, तो यह एक अलग शेल प्रक्रिया में चलती है। जब वह शेल प्रक्रिया समाप्त हो जाती है, तो उन कमांड के प्रभाव खत्म हो जाते हैं। यही कारण है कि आपके जैसे स्क्रिप्ट अक्सर साथ अंत है , , , या जो कुछ भी - यह कारण बनता है प्रक्रिया , लागू करने के लिए नए माहौल में है कि एक इंटरैक्टिव शेल के रूप में।./scriptname.shexec shexec bashexec zsh

आप इसे इस तरह से नहीं करना चाहते हैं, केवल एक अन्य दृष्टिकोण स्क्रिप्ट चलाने के लिए है में अपने मुख्य, इंटरैक्टिव खोल। बैश में, आप इसके साथ कर सकते हैं

source scriptname .sh

या

 scriptname .sh

( यदि स्क्रिप्ट वर्तमान निर्देशिका में है, तो आपको उपयोग करने की आवश्यकता हो सकती है ।) मुझे पूरा यकीन है कि इसकी कार्यक्षमता समान है। वाक्यविन्यास अलग हो सकता है; अपने शेल के लिए दस्तावेज़ की जाँच करें।./scriptname.shzsh

यदि आपको ऐसा करने के लिए याद रखने में परेशानी होती है (या यदि यह बोझिल हो जाता है), तो इसके लिए एक उपनाम निर्धारित करने पर विचार करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.