इसे समझने के लिए आपको महसूस करना चाहिए कि स्क्रिप्ट की पहली पंक्ति वास्तव में दो बार , 2 अलग-अलग कार्यक्रमों द्वारा पढ़ी जाती है। पहली बार, कर्नेल फ़ाइल खोलता है और #!
पहली पंक्ति पर उस वर्ण अनुक्रम ( ) की तलाश करता है। यदि यह पता चलता है, तो यह शेल प्रोग्राम को चलाता है जो वहां इंगित किया गया है, फ़ाइल नाम को एक पैरामीटर के रूप में पास करना। (जैसे यदि फ़ाइल के /home/me/foo
साथ शुरू होता है #!/bin/sh
, तो कर्नेल चलेगा /bin/sh /home/me/foo
)।
अगले शेल ( bin/sh
या जो भी दुभाषिया कार्यक्रम निर्दिष्ट किया गया था) फ़ाइल को पढ़ता है। शेल को शेलबैंग लाइनों के बारे में कुछ भी नहीं पता है लेकिन यह अभी भी पहली पंक्ति को पढ़ेगा क्योंकि यह फ़ाइल में किसी भी अन्य लाइन की तरह है ... यह उन सभी को पढ़ता है। आप नहीं चाहते हैं कि शेल किसी भी तरह से अपने व्यवहार को क्रैश या बदल दे ... ऐसा करने का तरीका यह है कि यह एक टिप्पणी के रूप में है और इसे अनदेखा करें। इस प्रकार, एक कर्नेल निर्देश के साथ शुरू करने के लिए सबसे अच्छा चरित्र टिप्पणी चरित्र होगा।
#!
(जितना dmr याद है ...), क्यों#
(हाँ, लाइन को मौजूदा गोले द्वारा अनदेखा किया जाना था ) के स्पष्टीकरण सहित ।