Sh आणि ./ चा वापर करून बॅश स्क्रिप्ट चालवण्यामध्ये काय फरक आहे?

फक्त बॅश नसून कोणत्याही प्रकारच्या स्क्रिप्टचा वापर करताना हा समान प्रश्न उद्भवू शकतो. दुभाषेद्वारे स्क्रिप्ट चालवणे आणि त्यास थेट चालवणे यात फरक आहे काय?

चला आणखी एक रहस्य जे आपण या मनोरंजक पोस्टमध्ये लिट्स यूज लिनक्स (यूएल) कडून उघड करू.


जेव्हा आपण स्क्रिप्टचे फाईलनाव दुभाष्यास (श, अजगर, पर्ल इ.) पुरवून स्क्रिप्ट चालवता, तेव्हा आपण युक्तिवाद म्हणून कार्यान्वित करायचा असा प्रोग्राम देऊन इंटरप्रिटर कार्यान्वित करता. उदाहरणार्थ, आपण चुकीचे भाष्य.श आर्ग्युमेंट देऊन हे श इंटरप्रेटर चालविते.

sh myscript.sh

जर आपण स्क्रिप्ट स्वतःच चालवत असाल तर, सिस्टम त्याला आवश्यक इंटरप्रीटरला कॉल करेल, आणि हो, ती स्क्रिप्ट कार्यान्वित करेल आणि त्या दुभाषेला युक्तिवाद म्हणून पास करेल, परंतु सर्व आपोआप आणि स्क्रिप्ट चालविणार्‍या वापरकर्त्याशिवाय.

./myscript.sh

स्वतः स्क्रिप्ट चालविण्यासाठी, 2 अटी पूर्ण केल्या पाहिजेत:

1) स्क्रिप्टमध्ये "मोठा आवाज" असणे आवश्यक आहे. ही स्क्रिप्टची पहिली ओळ आहे, जी # अक्षरापासून सुरू होण्यास आवश्यक आहे! आणि आपणास दुभाषेचा मार्ग सापडला पाहिजे. हे लक्षात घेणे आवश्यक आहे की ही स्थिती केवळ बॅशच्याच नव्हे तर कोणत्याही प्रकारच्या स्क्रिप्टसाठी (अजगर, पर्ल इ.) सत्य आहे.

अशा प्रकारे, उदाहरणार्थ, आमच्या स्क्रिप्टमध्ये प्रथम ओळ म्हणून खालील गोष्टी असाव्यात:

#! / बिन / बॅश

२) फाईलमध्ये कार्यान्वयन परवानग्या असणे आवश्यक आहे:

आमच्या स्क्रिप्टला अंमलबजावणी परवानग्या मंजूर करण्यासाठी, आपण हे लिहिले पाहिजे:

chmod a + x miscript.sh

तयार आहे, आता फक्त यासारखे चालवा:

./myscript.sh

किंवा स्क्रिप्ट कॉपी करून "खास" मार्गावर सहजपणे विनंती केली जाऊ शकते. उदाहरणार्थ, आम्ही ते / usr / sbin वर कॉपी करू आणि जिथून आहे तेथे संपूर्ण मार्ग समाविष्ट न करता कुठूनही ते चालवू शकता:

आम्ही कॉपी करतोः

sudo सीपी Miscript.sh / usr / sbin / चुकीची

आम्ही कार्यान्वित करतोः

चुकीची प्रत

आपण पहातच आहात की, प्रत्यक्षात पडद्यामागे जे घडते ते दोन्ही बाबतीत अगदी समान आहे. तथापि, "बँग लाइन" समाविष्ट करून, आपल्या स्क्रिप्ट्सचे वितरण करणे सोपे होईल, कारण वापरकर्त्यांना आवश्यक दुभाष्यांचा कार्यान्वयन करण्यास सक्षम असलेल्या मार्गाचे स्मरण करण्याची गरज नाही. निष्कर्ष: हा मुळात सांत्वन करण्याचा प्रश्न आहे.


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   ओस्वाल्डो व्हिल्रॉयल म्हणाले

    मी तुमच्याशी सहमत आहे एरपॉवर, दुभाषेची आवृत्ती आणि तिचे पथ दोन्ही स्थिर आणि स्थिर नसतात, परंतु जीएनयू / लिनक्स वितरण केवळ बाश वापरणारे नसतात असे मानले जाते (तेथे देखील आहेत: फ्रीबीएसडी, ओपनसोलारिस, मॅक) आणि त्यापैकी बर्‍याच जणांचे कॉन्फिगरेशन किंवा मार्ग भिन्न आहेत.

    महत्वाची गोष्ट म्हणजे हे जाणून घ्या की आपल्याकडे स्क्रिप्टवरील कॉलसह. / किंवा श (किंवा अजगर ... इ) सह प्ले करण्यासाठी लवचिकता आहे (जसे आपण चांगले नमूद केले आहे).

  2.   he_who_knows@gmail.com म्हणाले

    बॅश हा एक संगणक प्रोग्राम आहे ज्याचे कार्य ऑर्डरचे स्पष्टीकरण करणे आहे.

    हे युनिक्स शेलवर आधारित आहे आणि पीओएसएक्स अनुरूप आहे.

    त्याऐवजी sh हा संगणक प्रोग्राम आहे ज्याचे कार्य ऑर्डरचे स्पष्टीकरण करणे आहे.
    प्रक्रिया नियंत्रण, पुनर्निर्देशन यासारख्या वैशिष्ट्यांचा समावेश आहे
    इनपुट / आउटपुट, फाइल सूची आणि वाचन, संरक्षण,
    संप्रेषण आणि द्वारा प्रोग्राम लिहिण्यासाठी कमांड भाषा
    बॅचेस किंवा स्क्रिप्ट्स. युनिक्सच्या पहिल्या आवृत्त्यांमध्ये तो दुभाषेचा वापर केला गेला आणि तो डी फॅक्टो स्टँडर्ड बनला.

  3.   डायना सी म्हणाले

    हॅलो, मी स्क्रिप्टच्या वापरामध्ये एक नवशिक्या आहे आणि मला समस्या आहे की कोणी मला मदत करू शकेल की नाही हे मला आवडेलः

    कन्सोलद्वारे अनेक प्रारंभिक डेटाचा समावेश आवश्यक असणारा एखादा प्रोग्राम मी व्यवस्थापित करीत आहे आणि मला आढळले की स्क्रिप्टद्वारे प्रारंभिक डेटासह प्रोग्राम कार्यान्वित करणे शक्य आहे, जेणेकरून मी पुन्हा पुन्हा लिहावे लागणार नाही. कार्यक्रम चालविणे आवश्यक आहे.

    हे कसे करावे हे मला माहित नाही, म्हणून जर कोणी मला यात मदत करेल तर मी खूप कृतज्ञ होईल.

  4.   लिनक्स वापरुया म्हणाले

    पहा, आपण कोणत्या प्रोग्रामिंग भाषेत स्क्रिप्ट लिहित आहात यावर अवलंबून आहे. तथापि, कोणत्याही परिस्थितीत आपल्याला आवश्यक ते आहेः

    १) जेव्हा स्क्रिप्ट कार्यान्वित होईल तेव्हा वापरकर्त्याने तो डेटा प्रविष्ट करावासा वाटल्यास, इनपुटमध्ये प्रविष्ट केलेली मूल्ये बदलण्याकरिता सर्वात सामान्य प्रक्रिया असते.

    २) जर मूल्ये नेहमीच एकसारखी असतील तर आपण स्थिरांक वापरू शकता.

    3) दुसरा पर्याय म्हणजे आपली स्क्रिप्ट पॅरामीटर्स घेण्याची शक्यता आहे.

    चीअर्स! पॉल.

  5.   लिनक्स वापरुया म्हणाले

    आपण काय उल्लेख करता हे मनोरंजक आहे. त्याला 2 फॉर्म म्हणतात: शेबॅंग लाइन किंवा थेट बँग लाइन. मी तुम्हाला माहिती देतो: http://python.about.com/od/programmingglossary/g/defbangline.htm
    चीअर्स! पॉल.

  6.   llomellamomario म्हणाले

    विशेष म्हणजे मी त्या तपशीलाबद्दल विचार करणे कधीच थांबवले नव्हते. कन्सोलर रीचिंगवर अधिक लेख पाहणे मनोरंजक ठरेल, त्यापैकी फक्त सुसंगततेसाठी आणि सिस्टमची गती सुधारण्यासाठी तेथे असलेले अनावश्यक किलो कोड काढून टाकण्यासाठी प्रसिद्ध कर्नल रीकोम्प्लीशन आहे.

  7.   लिनक्स वापरुया म्हणाले

    ठीक आहे. मी ते ध्यानात ठेवू.
    चीअर्स! पॉल.

  8.   लिनक्स वापरुया म्हणाले

    मी काम केले याचा आनंद आहे. मी नेहमी मनोरंजक आणि व्यावहारिक वाटणार्‍या गोष्टी पोस्ट करण्याचा प्रयत्न करतो.
    मिठी! पॉल.

  9.   फेलिक्स मॅन्युएल ब्रिटो अमारांटे म्हणाले

    चांगल्या सवयीसह प्रत्येक प्रोग्रामर कोडच्या पहिल्या ओळीत एक "मोठा आवाज" जोडतो. पायथनमध्ये मी कोडिंग आणि मोठा आवाज कधीच विसरणार नाही.
    #! / usr / बिन / अजगर 2.7
    # *. * एन्कोडिंग = utf-8 *. *

  10.   डायक्स02 म्हणाले

    उत्कृष्ट, आशा आहे की आपण कमांड लाइनबद्दल अधिक माहिती प्रकाशित करू शकता, विशेषत: जेव्हा स्त्रोत फायलींकडून संकलित करणे किंवा स्थापित करणे (टेर.gz, इ.) येते तेव्हा

  11.   जो दी कॅस्ट्रो म्हणाले

    मी "बँग लाइन" कधीच ऐकले नव्हते मला ते नेहमीच शेबंग म्हणून ओळखले जाते

    http://en.wikipedia.org/wiki/Shebang_%28Unix%29

    कोट सह उत्तर द्या

  12.   जोनाथन फर्नांडिज म्हणाले

    मनोरंजक टीप ... धन्यवाद!

  13.   ईएम दी ईएम म्हणाले

    किती मनोरंजक आहे, मी प्रोग्रामिंग आणि स्क्रिप्टशी संबंधित सर्व गोष्टींमध्ये स्वत: ला पूर्णपणे अज्ञानी घोषित करतो, ते कसे कार्य करते याबद्दल मला काहीच कल्पना नव्हती, परंतु काहींच्याकडे हेडर असल्याचे माझ्या लक्षात आले आहे.

  14.   मारिओ रायमोंडी म्हणाले

    या एंट्रीशी संबंधित असलेल्या स्पष्टीकरणः मला अ‍ॅडोब एअर गॅझेट (एक पोकर शक्यता कॅल्क्युलेटर) स्थापित करायचे होते. एडोब एअर इंस्टॉलर काय करतो ते संबंधित स्क्रिप्ट "सु" सह चालविते परंतु फॉर्ममध्ये ./ आपल्याला मूळ संकेतशब्द विचारत आहे. स्क्रिप्टमध्ये अंमलबजावणीसाठी परवानगी नसल्यामुळे, ही परवानगी नाकारली गेली, समाधान: आपण परवानग्या बदलू इच्छित नसल्यास sh सह स्क्रिप्ट चालवा (tmp chmod फोल्डरवर जाण्यापेक्षा वेगवान आणि हे सर्व). स्क्रिप्ट कार्यान्वित झाली आहे, त्याला अ‍ॅडॉब इंस्टॉलर आणि इतर फुलपाखरू वस्तू म्हणतात.

  15.   इरो-सेन्निन म्हणाले

    खूप मजेशीर लेख! कन्सोलबद्दल थोडे अधिक जाणून घेण्यात मदत केल्याबद्दल धन्यवाद. आपण असे ^^ सारखे लेख प्रकाशित करत रहात की नाही ते पाहू या.
    सुरू ठेवा, हा माझा आवडता ब्लॉग निःसंशय आहे !!

  16.   सेना म्हणाले

    हे लक्षात ठेवा की दुभाषे वापरल्या जाणार्‍या आवृत्त्यांमध्ये फरक असू शकतो. लिपी थेट शेबॅंगनुसार चालवणे, इंटरप्रीटरची कोणती आवृत्ती वापरावी हे दर्शविण्याचा कोणताही मार्ग नाही, जे आवश्यक असू शकते. आपण त्याऐवजी इंटरप्रीटर चालवत असल्यास आणि स्क्रिप्टला पॅरामीटर म्हणून पास केल्यास, त्याची कोणती आवृत्ती चालू आहे हे आपल्याला माहिती आहे.

    पायथनमध्ये उदाहरणार्थ, जर शेबॅंग #! / Usr / bin / python2.4 असेल तर तो प्रोग्राम #! / Usr / bin / python2.6 पेक्षा वेगळ्या पद्धतीने चालविला जाईल किंवा # असल्यास! / Usr / bin / अजगर (हा सहसा पायथनच्या आवृत्तीचा प्रतीकात्मक दुवा असतो जो डीफॉल्टनुसार इन्स्टॉल केलेला आणि कॉन्फिगर केलेला आहे). पायथन २.2.6 मध्ये पायथन २.2.4 मध्ये अस्तित्त्वात नसलेली नवीन कार्यक्षमता आहे, म्हणून सिस्टममध्ये फक्त पायथन २.2.4 स्थापित केले असेल तर #! / Usr / bin / python shebang दर्शविणारी कार्यक्षमता वापरणारी स्क्रिप्ट लिहिणे अयशस्वी होईल. त्याऐवजी, आपण स्क्रिप्टला "अजगर 2.4 /path/al/script.py" किंवा "पायथॉन 2.6 /path/al/script.py/ ने प्रारंभ करुन आपल्याला पाहिजे असलेल्या अजगराच्या आवृत्तीसह चालविण्यासाठी सक्ती करू शकता.

    शेल स्क्रिप्टसाठी, आपण वापरत असलेल्या शेलमध्ये देखील फरक आहेत, म्हणून #! / Bin / sh आणि #! / Bin / bash चा वापर स्क्रिप्टच्या आधारे भिन्न परिणाम होऊ शकतो. जर आपण स्क्रिप्ट फक्त बॅशमध्ये अस्तित्त्वात असलेली वैशिष्ट्ये वापरुन लिहिली परंतु शेबॅंग दर्शविली #! इतर युनिक्समध्ये जिथे बॅश स्थापित केलेला नाही किंवा जेथे / बिन / शे / बिन / बॅशचा प्रतीकात्मक दुवा नाही.

    पोर्टेबिलिटीशी संबंधित देखील, हे लक्षात घेतले पाहिजे की शेबॅंगमध्ये दर्शविलेला मार्ग निरपेक्ष आहे आणि असेही वेळा असतात जेव्हा इतर ठिकाणी दुभाषे स्थापित केले जातात. उदाहरणार्थ, जर आपण आपल्या वितरणामधून पॅकेज वापरण्याऐवजी पायथन डाउनलोड आणि कंपाईल केले असेल तर / यूएसआर / लोकल / बिन / पायथनमध्ये अजगर दुभाषी स्थापित करणे सामान्य आहे. जर आपली शेबॅंग #! / उसर / बिन / अजगर असेल तर स्क्रिप्ट त्या सिस्टमवर चालणार नाही. या समस्या टाळण्याचा प्रयत्न करण्यासाठी, आपण वर्णन केल्यानुसार "#! / Usr / bin / env पायथन" (किंवा "#! / Usr / bin / env sh") म्हणून वापरू शकता. http://en.wikipedia.org/wiki/Shebang_(Unix)#Portability

  17.   लिनक्स वापरुया म्हणाले

    धन्यवाद जोनाथन! आपली टिप्पणी पाहून चांगले वाटले!
    चीअर्स! पॉल.

  18.   अँटोनियो म्हणाले

    मला जे काही शिकायचे आहे ते कोठेही नाही, किंवा शोध इंजिनमध्ये ते कसे वाढवायचे हे मला माहित नाही, मी एक स्क्रिप्ट तयार करू इच्छित आहे जे एका कारणास्तव xX कमांड एप्टीट्यूड किंवा «su« कार्यान्वित करते (हे केवळ एक उदाहरण आहे परंतु ती 2 प्रकरणे आहेत ज्यांचा मी विचार करू शकतो) आणि योग्यतेच्या बाबतीत कधीकधी ते मला "योन" प्रविष्ट करण्यास सांगतात किंवा "सु" मध्ये ते मला संकेतशब्द विचारतात ... मला स्क्रिप्टने हे पर्याय निवडले पाहिजेत. एकतर पॅरामीटर पास करून किंवा काही माहिती नसलेली पद्धत वापरुन स्वयंचलितपणे .... लक्ष दिल्याबद्दल धन्यवाद

    1.    लिनक्स वापरुया म्हणाले

      हॅलो अँटोनियो! जर आपल्या समस्येमध्ये संकेतशब्द प्रविष्ट केला जात असेल तर मला असे वाटत नाही की यावर उपाय आहे. तंतोतंत कारण हा एक सुरक्षा उपाय आहे, जेणेकरून प्रत्येकजण प्रोग्राम स्थापित करू शकत नाही.
      योग्यतेबद्दल आणि हो ठेवण्यासाठी, मला वाटते की हे निराकरण केले जाऊ शकते. मला या क्षणी वापरण्यासाठी अचूक पॅरामीटर आठवत नाही, परंतु फक्त मॅन पृष्ठांमध्ये शोधा. टर्मिनल उघडा आणि मॅन एप्टीट्यूड कमांड द्या.
      मिठी! पॉल.

  19.   डेव्हिड एमएम म्हणाले

    खूप चांगली पोस्ट.
    मला हे पोस्ट विशेषतः आवडले- जे उद्भवते त्या प्रश्नाचे / संशयाचे उत्तर अगदी स्पष्ट आणि संक्षिप्तपणे दिले गेले आहे.