मैं अपने स्वयं के बनाए गए खोल कार्य को .sh फ़ाइलों के साथ कैसे बना सकता हूं - लिनक्स, बैश, खोल, यूनिक्स

मेरे शिक्षक ने हमें अपना खुद का खोल बनाने के लिए यह असाइनमेंट दिया। हमारे खोल को rshell कहा जाता है और नियमित खोल की तरह काम करना चाहिए।

मैंने सी ++ का उपयोग करके अपना खुद का खोल बनाया। यदि आप एक कमांड टाइप करते हैं ls मेरे बनाए गए खोल में यह आपको एक सूची देता है जैसे कि आपने टाइप किया है ls नियमित खोल में।

जिस समस्या का सामना कर रहा हूं वह है कि मैं कैसे प्राप्त करूं .sh मेरे बनाए गए खोल के साथ काम करने के लिए फ़ाइलें या स्क्रिप्ट फ़ाइलें। मैंने देखा कि जब मैं दौड़ता हूं .sh मेरे खोल का उपयोग कर फ़ाइल यह नहीं चलाता है .sh मेरे खोल के माध्यम से फ़ाइल। यह नियमित खोल के माध्यम से चलाता है। मैं कैसे करूँ .sh फाइलें मेरे खोल के माध्यम से चलती हैं?

उत्तर:

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

अपने खोल पर इंगित करने के लिए स्क्रिप्ट की हैश-बैंग लाइन बदलें। उदाहरण के लिए,

#!/usr/local/bin/rshell

या जहां भी आपका खोल निष्पादन योग्य है।


जवाब के लिए 4 № 2

जैसा कि जॉन ने पहले ही कहा था, शेबांग को अपने खोल को इंगित करने के लिए बदलें। कर्नेल फ़ाइल के साथ शेबांग में कमांड को एक तर्क के रूप में आमंत्रित करेगा। प्रदर्शित करने के लिए, एक शेबैंग के साथ एक फ़ाइल का प्रयास करें #!/bin/cat

#!/bin/cat
hello world

यह बहुत ही व्यवहार करता है जैसे आपने टाइप किया था /bin/cat /path/to/file

शेबांग में पाथ लुकअप क्षमता नहीं है, इसलिए #!yourshell एक शेबांग के रूप में काम नहीं करेगा। हालांकि, आप इसका उपयोग कर सकते हैं env के रूप में पाथ लुकअप करने के लिए #!/usr/bin/env yourshell। (यह दृष्टिकोण उन आदेशों के लिए प्राथमिकता दी जाती है जो विभिन्न प्रणालियों जैसे पायथन पर विभिन्न पथों पर हैं।)


संबंधित सवाल
सबसे लोकप्रिय