/ / खोल स्क्रिप्ट के भीतर से "बाहर निकलें" - बैश, खोल

खोल स्क्रिप्ट के भीतर से "बाहर निकलें" कॉल करें - बैश, खोल

मैं एक साधारण स्क्रिप्ट (एक एम्बेडेड सिस्टम के लिए) लिखने की कोशिश कर रहा हूं जो नेटवर्क से बाहरी फाइल को माउंट करता है और फिर कॉल करता है exit कमांड लाइन पर (जो व्यस्त बॉक्स टर्मिनल से बाहर निकलता है और सिस्टम को नव-आरोहित रूट निर्देशिका से बूट करता है)। समस्या है, जब मैं फोन करता हूँ exit शेल स्क्रिप्ट से यह स्क्रिप्ट से बाहर निकलता है, बाहरी टर्मिनल नहीं। कैसे भेजना है के बारे में कोई संकेत exit स्क्रिप्ट के बाहर कमांड?

मेरा कोड ऐसा कुछ दिखता है:

#!/bin/bash
mount /mnt/root 1.2.3.4:/path/to/external/files -o nolock
exit   # exits the script, not the outside filesystem!

उत्तर:

जवाब के लिए 3 № 1

exit वास्तव में वर्तमान खोल से बाहर निकलता है। हालांकि, स्क्रिप्ट चलाने से एक नई प्रक्रिया होती है, और यह वह प्रक्रिया है जो बाहर निकलती है, न कि खोल जिसे आपने स्क्रिप्ट कहा था।

आप शायद फ़ाइल को स्रोत बनाना चाहते हैं:

$ source myScript.sh

फिर myScript.sh एक मौजूदा प्रक्रिया के बजाय वर्तमान खोल में निष्पादित किया जाता है, और exit आपके वर्तमान खोल से बाहर निकल जाएगा (और इसलिए टर्मिनल स्वयं)।


उत्तर № 2 के लिए 1

यदि आप चाहते हैं कि स्क्रिप्ट बाहरी टर्मिनल से निकलती है तो इसे इस तरह कॉल करें:

source your_script

या केवल

. your_script

जहां . जैसा ही है source आदेश। आप का पालन कर सकते हैं यह लेख यदि आपको ज़्यादा जानकारी की जरूरत हो।


स्पष्टीकरण: source में स्क्रिप्ट निष्पादित करेगा वर्तमान खोल और इसलिए बाहर निकलने के लिए वर्तमान खोल से व्याख्या की जाएगी - छद्म (!) टर्मिनल विंडो बंद कर देगा, अगर खोल पेड़ में पहला खोल था