बैश स्क्रिप्ट में कमांड और टर्मिनल में कमांड के बीच अंतर


13

क्या आप किसी स्क्रिप्ट में शामिल टर्मिनल और कमांड में टाइप किए जाने वाले कमांड के बीच कोई अंतर रखते हैं?


बिल्कुल एक गूंगा सवाल नहीं! की जाँच करें इस तो (प्रथम), इस , और यह
इमानुएल बर्ग

जवाबों:


7

आपका टर्मिनल एक शेल (शायद सबसे bash) चलाता है , जो कि आपके आदेशों के लिए पूछ रहा है और उन्हें चलाता है।

इस इंटरेक्टिव मोड के अलावा आप किसी फाइल से कमांड चलाने के लिए अपने शेल का भी उपयोग कर सकते हैं। अपनी फ़ाइल में आदेशों को निष्पादित करने के लिए आप या तो शेल को सीधे कॉल कर सकते हैं bash scriptया आप अपनी फ़ाइल को "शेलबैंग" से शुरू कर सकते हैं #!/bin/bashऔर इसे निष्पादन योग्य ( chmod +x script) बना सकते हैं। फिर आप स्क्रिप्ट को एक बाइनरी की तरह मान सकते हैं और उदाहरण के लिए निष्पादित कर सकते हैं ./scriptया इसे उस जगह पर रख सकते हैं जहां आप खोल रहे हैं। ( echo $PATH)

शायद आपके इंटरेक्टिव शेल और रन करने के लिए उपयोग किया जाने वाला शेल दोनों है bash। एक "पहले दिन सीखने की लय" के दृष्टिकोण से दोनों मोड में बैश बिल्कुल समान है। - बहुत बाद में आप मामूली अंतर के बारे में ठोकर खा सकते हैं। यदि आप वास्तव में विस्तार से जानना चाहते हैं, तो मैं man bash"इंटरैक्टिव" का उल्लेख करने वाले स्थानों को पढ़ने और खोजने का सुझाव दूंगा। (आप दबाकर एक आदमी पृष्ठ खोज सकते हैं /।)

एक महत्वपूर्ण बात यह है कि स्क्रिप्ट को एक नई प्रक्रिया के रूप में चलाया जाता है। यह विशेष रूप से इसका मतलब है कि स्क्रिप्ट में सेट किए गए चर कॉलिंग शेल में दिखाई नहीं देते हैं।

$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$ 

निर्यात के बिना aआंतरिक लिपि में भी दिखाई नहीं देता है।


1

सामान्य तौर पर, उत्तर "नहीं" होगा, शेल में कमांड सिंटैक्स और शब्दार्थ में समान हैं।

लेकिन पर्यावरण के विन्यास से संबंधित छोटी बारीकियों का एक समूह है (जो चर का उपयोग किया जाता है और जो वे सेट होते हैं)।

  • लिनक्स के लिए पसंद की इंटरैक्टिव खोल bash है, लेकिन पटकथा अक्सर दूसरे दुभाषिए का उपयोग करता है ( shहैं, जिनमें से एक पूर्ववर्ती है bash, kshहै, जो पार्टी के साथ पर बराबर है), तो आप क्या खोल प्रयोग किया जाता है को ध्यान में रखना है (वर्तमान खोल नाम पारंपरिक रूप से चर में आयोजित किया जाता है SHELL, टाइप करने का प्रयास करें echo $SHELL)।

  • इंटरैक्टिव सत्र के लिए और स्क्रिप्ट निष्पादन के लिए एक ही दुभाषिया के विन्यास में अंतर हो सकता है।


-1

कोई स्क्रिप्ट उन आदेशों की एक सूची है जिन्हें आप टर्मिनल में टाइप कर सकते हैं।

आप टर्मिनल में एक स्क्रिप्ट की समग्रता पेस्ट कर सकते हैं, और परिणाम इसे चलाने के समान होगा।

इसके विपरीत, आप एक फ़ाइल के अंदर अपने टर्मिनल कमांड को "सेव" कर सकते हैं और इसे एक पुन: प्रयोज्य स्क्रिप्ट में बदल सकते हैं और इसे अपने परिवार और दोस्तों के साथ साझा कर सकते हैं।


4
नहीं। सामग्री को चिपकाना स्क्रिप्ट की सोर्सिंग के बराबर है। यह वर्तमान शेल में सभी प्रकार के विकल्प बदल देगा, जो केवल स्क्रिप्ट चलाने से नहीं बदले जाएंगे।
माइकेश

तुम सही हो। लेकिन जहां तक ​​उसके सवाल हैं। मुझे लगता है कि हम कह सकते हैं कि यह काफी समान है। लेकिन हां, माइक ने नोबल शर्तों में जो कहा था उसका अनुवाद करने के लिए। स्क्रिप्ट की सामग्री को पेस्ट करना बराबर है source script_file। जो वर्तमान संदर्भ में ईएनवी संस्करण को संपादित करेगा। स्क्रिप्ट को चलाने के ./script_fileदौरान ENV को संशोधित नहीं किया जाएगा, जब तक exportकि इसका स्पष्ट रूप से उपयोग नहीं किया जाता है।
मैथ्यू जे।

1
नहीं। यहां तक ​​कि exportस्क्रिप्ट के लिए कॉलिंग शेल के किसी भी चर को संशोधित करना संभव नहीं है। वही पीडब्ल्यूडी, परिभाषित उपनाम, कार्य और जैसी चीजों के लिए जाता है। उन्हें केवल अंतःक्रियात्मक रूप से या किसी फ़ाइल को सोर्स करके बदला जा सकता है। लेकिन हाँ, यह शायद कुछ भी नहीं है कि कोई पहले दिन ठोकर खाएगा। :)
माइक डेस

1
@मिचास: ठीक है, सही विवरण देना अभी भी बेहतर है। यदि शुरुआत महत्वाकांक्षी है, और काम करने की आदत है, तो वह जल्दी से उठाएगा। यदि हम बच्चे की कहानी बताने की कोशिश करते हैं, तो हम बस अपने पैरों पर ठोकर खाएंगे और एक असंगत प्रभाव डालेंगे - इसके अलावा, शुरुआतकर्ता बाद में वापस आ सकता है। हालांकि मैं खुद को शुरुआती नहीं मानता, लेकिन बहुत सी ऐसी चीजें हैं जो मुझे नहीं पता हैं, और अगर किसी ने मेरे सवालों का जवाब देने से कुछ भी मना कर दिया, तो मेरा अपमान होगा क्योंकि "आप अभी तक नहीं हैं, जूनियर"।
इमानुएल बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.