मैं कुछ शेल स्क्रिप्ट ट्यूटोरियल से गुजर रहा था और निम्नलिखित नमूना कार्यक्रम पाया:
#!/bin/sh
clear
echo "HELLO WORLD"
क्या कोई मुझे बता सकता है #!/bin/sh
कि शुरुआत में टिप्पणी का क्या महत्व है?
मैं कुछ शेल स्क्रिप्ट ट्यूटोरियल से गुजर रहा था और निम्नलिखित नमूना कार्यक्रम पाया:
#!/bin/sh
clear
echo "HELLO WORLD"
क्या कोई मुझे बता सकता है #!/bin/sh
कि शुरुआत में टिप्पणी का क्या महत्व है?
जवाबों:
इसे एक शेबंग कहा जाता है , और मूल शेल को बताता है कि स्क्रिप्ट को निष्पादित करने के लिए दुभाषिया का उपयोग किया जाना चाहिए।
जैसे
#!/usr/bin/perl <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.
यह एक टिप्पणी के रूप में लागू किया जाता है ताकि उस पंक्ति में आने वाली कोई भी चीज निर्दिष्ट किए गए दुभाषिया के लिए "प्रासंगिक" न हो। उदाहरण के लिए, सभी स्क्रिप्टिंग भाषाएं यह समझती हैं कि एक रेखा के साथ शुरू होने वाली #
एक टिप्पणी है, और उस !/usr/bin/whatever
हिस्से को अनदेखा कर देगी , जो अन्यथा उस विशेष भाषा में एक वाक्यविन्यास त्रुटि हो सकती है।
exec()
फ़ाइल पर सिस्टम कॉल को कॉल करता है।
जब आप यूनिक्स (निष्पादन योग्य बिट सेट के साथ एक) में एक कार्यक्रम को निष्पादित करने का प्रयास करते हैं, तो ऑपरेटिंग सिस्टम फ़ाइल के पहले कुछ बाइट्स को देखेगा। ये तथाकथित "मैजिक नंबर" बनाते हैं, जिसका उपयोग कार्यक्रम के प्रारूप और इसे निष्पादित करने के तरीके को तय करने के लिए किया जा सकता है।
#!
जादू नंबर 0x2321 से मेल खाती है (इसे अस्सी टेबल पर देखें)। जब सिस्टम देखता है कि जादू की संख्या, यह जानता है कि यह एक टेक्स्ट स्क्रिप्ट के साथ काम कर रहा है और अगले तक पढ़ता है \n
(एक सीमा है, लेकिन यह मुझे एटीएम से बच जाता है)। दुभाषिया (शेबंग के बाद पहला तर्क) की पहचान करने के बाद वह दुभाषिया को बुलाएगा।
अन्य फाइलों में भी मैजिक नंबर होते हैं। बिटमैप (.BMP) फ़ाइल के माध्यम less
से देखने का प्रयास करें और आप देखेंगे कि पहले दो अक्षर हैं BM
। यह मैजिक नंबर बताता है कि फाइल वास्तव में बिटमैप है।
यदि यह स्क्रिप्ट जिस फ़ाइल में रहती है, निष्पादन योग्य है, हैश-बैंग #!
ऑपरेटिंग सिस्टम को बताता है कि स्क्रिप्ट को चलाने के लिए कौन से दुभाषिया का उपयोग करना है। इस मामले में यह /bin/sh
उदाहरण के लिए है।
अधिक जानकारी के लिए इसके बारे में एक विकिपीडिया लेख है ।
पहली पंक्ति शेल को बताती है कि यदि आप स्क्रिप्ट को सीधे निष्पादित करते हैं (.run.sh; जैसा कि / bin / sh run.sh के विपरीत), तो उसे व्याख्या करने के लिए उस प्रोग्राम (/ bin / sh) का उपयोग करना चाहिए।
आप इसका इस्तेमाल आम तौर पर तर्क-वितर्क (त्रुटि पर बाहर निकलने), या अन्य कार्यक्रमों (/ बिन / जाग, / usr / बिन / पर्ल, आदि) का उपयोग करने के लिए भी कर सकते हैं।
#!/bin/sh
या #!/bin/bash
स्क्रिप्ट की पहली पंक्ति होनी चाहिए क्योंकि यदि आप इसे पहली पंक्ति पर उपयोग नहीं करते हैं, तो सिस्टम उस स्क्रिप्ट के सभी कमांड को अलग-अलग कमांड के साथ व्यवहार करेगा। यदि पहली पंक्ति है #!/bin/sh
तो यह सभी कमांड्स को एक स्क्रिप्ट के रूप में मानेगा और यह दिखाएगा कि यह फाइल ps
कमांड में चल रही है न कि फाइल के अंदर कमांड्स।
./echo.sh
ps -ef |grep echo
trainee 3036 2717 0 16:24 pts/0 00:00:00 /bin/sh ./echo.sh
root 3042 2912 0 16:24 pts/1 00:00:00 grep --color=auto echo
ps
, और कोड अंश से जारी किए जाने वाले कमांड #!/bin/sh
को स्वरूपित किया जाना चाहिए।