Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Shebang (#!) समझाया गया: Linux स्क्रिप्ट को इसकी आवश्यकता क्यों होती है

#! – आमतौर पर shebang, shabang, hashbang, poundbang उपनाम दिया जाता है – हम इस लेख की अवधि के लिए shebang पर रहेंगे।

यह अनगिनत Linux शेल स्क्रिप्ट की शुरुआत में पाया जाता है – लेकिन वास्तव में यह क्या है? आइए इसे तोड़ते हैं।

यह आमतौर पर ऐसा दिखता है

#!/bin/bash

#! फ़ाइल की शुरुआत में, आमतौर पर पहली पंक्ति पर, एक निष्पादन योग्य के पथ के बाद प्रकट होता है (इस मामले में, bash शेल)।

यह एक टिप्पणी है

यह # से शुरू होता है, इसलिए इसे स्क्रिप्ट के हिस्से के रूप में निष्पादित नहीं किया जाता है – यह क्योंकि प्रभावित करता है कि स्क्रिप्ट कैसे संचालित होती है…

यह एक इंटरप्रेटर निर्देश से पहले आता है

shebang सिस्टम को बताता है कि स्क्रिप्ट को चलाने के लिए किस इंटरप्रेटर का उपयोग करना है, इंटरप्रेटर निष्पादन योग्य का पथ देकर।

  • यह आमतौर पर फ़ाइल की शुरुआत में, पहली पंक्ति पर रखा जाता है, ताकि सही इंटरप्रेटर फ़ाइल के बाकी हिस्से को संभाल सके।
  • दिया गया पथ एक उपयुक्त निष्पादन योग्य का पूर्ण पथ होना चाहिए
  • shebang लाइन में इंटरप्रेटर को पास किए जा सकने वाले विकल्प हो सकते हैं, लेकिन इस पर समर्थन आपके वातावरण के आधार पर भिन्न होता है – केवल एक विकल्प शामिल करना सबसे सुरक्षित है।

उदाहरण

नीचे कुछ #! उदाहरण दिए गए हैं और उनका क्या अर्थ है:

bash

#!/bin/bash

इस लाइन को स्क्रिप्ट की शुरुआत में रखने से सिस्टम को बताया जाएगा कि इसे bash शेल निष्पादन योग्य का उपयोग करके निष्पादित किया जाना चाहिए।

zsh

#!/bin/zsh

इस लाइन को स्क्रिप्ट की शुरुआत में रखने से सिस्टम को बताया जाएगा कि इसे zsh शेल निष्पादन योग्य का उपयोग करके निष्पादित किया जाना चाहिए।

bash और zsh के बीच अंतर पर हमारा लेख यहां पढ़ें!

Python

#!/usr/bin/env python3

स्क्रिप्ट को Python 3 का उपयोग करके निष्पादित करें। ध्यान दें कि यहां python3 निष्पादन योग्य का पथ निर्दिष्ट करने के बजाय, यह लाइन उपयोगकर्ता के वातावरण के लिए वर्तमान में परिभाषित python3 निष्पादन योग्य को ढूंढती है।

कुछ भी नहीं!

#!/bin/false

एक विफलता स्थिति कोड लौटाता है और स्क्रिप्ट निष्पादित नहीं करता। उन स्क्रिप्ट में उपयोग किया जाता है जिन्हें सीधे निष्पादित करने का इरादा नहीं है।

#! को बायपास करना

यदि आप #! वाले स्क्रिप्ट को इस तरह चला रहे हैं:

./myscript.sh

यहां myscript.sh आपके स्क्रिप्ट का नाम है – shebang का उपयोग यह निर्धारित करने के लिए किया जाता है कि किस इंटरप्रेटर का उपयोग करना है।

उपरोक्त केवल उन स्क्रिप्ट पर किया जा सकता है जहां वर्तमान उपयोगकर्ता के पास execute अनुमति है।

हालांकि, यदि आप निम्न करते हैं:

bash myscript.sh

…तो shebang लाइन का उपयोग यह निर्धारित करने के लिए नहीं किया जाता है कि किस इंटरप्रेटर का उपयोग किया जाए, क्योंकि हमने इसे कॉल करने के लिए उपयोग की गई कमांड में bash निर्दिष्ट किया है। स्क्रिप्ट को निष्पादित नहीं किया जा रहा है, bash निष्पादित किया जा रहा है, इसलिए स्क्रिप्ट के लिए केवल पढ़ने की अनुमति आवश्यक है।


  1. मास्टर शेल प्रोग्रामिंग: लिनक्स शुरुआती के लिए 5 आवश्यक Bash स्क्रिप्ट्स - भाग II मास्टर शेल प्रोग्रामिंग: लिनक्स शुरुआती के लिए 5 आवश्यक Bash स्क्रिप्ट्स - भाग II

    कुछ सीखने के लिए आपको उसे करना होगा, असफल होने के डर के बिना। मैं व्यावहारिकता में विश्वास करता हूं और इसलिए आपको स्क्रिप्टिंग भाषा की व्यावहारिक दुनिया में साथ ले चलूंगा। यह लेख हमारे पहले लेख लिनक्स शेल और बेसिक शेल स्क्रिप्टिंग को समझें - भाग I का विस्तार है, जहां हमने आपको स्क्रिप्टिंग का स्वाद

  1. मास्टर लिनक्स शेल बेसिक्स: शुरुआती स्क्रिप्टिंग के लिए आवश्यक टिप्स मास्टर लिनक्स शेल बेसिक्स: शुरुआती स्क्रिप्टिंग के लिए आवश्यक टिप्स

    तस्वीरें शब्दों से ज्यादा बोलती हैं और नीचे दी गई तस्वीर लिनक्स के कामकाज के बारे में सब कुछ कहती है।   भी पढ़ें 5 शेल स्क्रिप्ट्स शेल प्रोग्रामिंग सीखने के लिए - भाग II लिनक्स BASH स्क्रिप्टिंग की दुनिया में नौकायन - भाग III लिनक्स शेल को समझना शेल: एक कमांड-लाइन इंटरप्रेटर जो यूज़र को ऑपर

  1. शेल स्क्रिप्ट सिंटैक्स चेकिंग में मास्टरी: एक व्यावहारिक डीबगिंग गाइड शेल स्क्रिप्ट सिंटैक्स चेकिंग में मास्टरी: एक व्यावहारिक डीबगिंग गाइड

    हमने शेल स्क्रिप्ट डीबगिंग श्रृंखला को विभिन्न डीबगिंग विकल्पों और शेल स्क्रिप्ट डीबगिंग मोड्स को सक्षम करने के तरीके की व्याख्या करके शुरू किया। अपनी शेल स्क्रिप्ट लिखने के बाद, यह अनुशंसा की जाती है कि हम उन्हें चलाने से पहले स्क्रिप्ट्स में सिंटैक्स को व्यावहारिक रूप से जांचें, बजाय इसके कि उनके