Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

Linux शेल स्क्रिप्ट में '#!' क्या है?

<मजबूत>#! – आमतौर पर उपनाम शेबांगशबांगहैशबैंगपाउंडबैंग - हम शेबांग . के साथ बने रहेंगे इस लेख की अवधि के लिए।

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

यह आमतौर पर कुछ इस तरह दिखता है

#!/bin/bash

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

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

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

यह एक दुभाषिया निर्देश को आगे बढ़ाता है

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

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

उदाहरण

नीचे कुछ #! . हैं उदाहरण और उनका क्या मतलब है:

बैश

#!/bin/bash

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

zsh

#!/bin/zsh

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

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

पायथन

#!/usr/bin/env python3

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

कुछ नहीं!

#!/bin/false

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

# को दरकिनार करते हुए!

अगर आप एक #! . के साथ कोई स्क्रिप्ट चला रहे हैं इस तरह:

./myscript.sh

यहां myscript.sh आपकी स्क्रिप्ट का नाम है - शेबैंग यह निर्धारित करने के लिए प्रयोग किया जाता है कि किस दुभाषिया का उपयोग किया जाना है।

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

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

bash myscript.sh

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


  1. शेल प्रोग्रामिंग सीखने के लिए Linux के नए शौक़ीन लोगों के लिए 5 शैल स्क्रिप्ट - भाग II

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

  1. लिनक्स शेल और बेसिक शेल स्क्रिप्टिंग लैंग्वेज टिप्स को समझें - भाग I

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

  1. शेल स्क्रिप्ट में सिंटेक्स चेकिंग डिबगिंग मोड कैसे करें

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