प्रोग्राम कॉन्फ़िगरेशन को कोड से अलग रखना महत्वपूर्ण है। यह गैर-प्रोग्रामर को प्रोग्राम के कोड को संशोधित किए बिना कॉन्फ़िगरेशन बदलने में सक्षम बनाता है। संकलित बाइनरी निष्पादन योग्य के साथ, यह गैर-प्रोग्रामर के लिए असंभव होगा क्योंकि इसके लिए न केवल स्रोत फ़ाइलों तक पहुंच की आवश्यकता होती है (जो हमारे पास ओपन सोर्स प्रोग्राम के साथ होती है) बल्कि एक प्रोग्रामर के कौशल सेट की भी आवश्यकता होती है। कुछ लोगों के पास यह है, और अधिकांश लोग सीखना नहीं चाहते हैं।
बैश जैसी शेल भाषाओं के साथ, स्रोत कोड का उपयोग परिभाषा के अनुसार उपलब्ध है क्योंकि शेल स्क्रिप्ट को बाइनरी प्रारूपों में संकलित नहीं किया जाता है। उस खुलेपन के बावजूद, गैर-प्रोग्रामर के लिए शेल स्क्रिप्ट में रूट करना और उन्हें बदलना विशेष रूप से अच्छा विचार नहीं है। यहां तक कि जानकार डेवलपर्स और sysadmins आकस्मिक परिवर्तन कर सकते हैं जो त्रुटियों का कारण बनते हैं या बदतर होते हैं।
इसलिए कॉन्फ़िगरेशन आइटम को आसानी से बनाए रखने वाली टेक्स्ट फ़ाइलों में रखने से अलगाव मिलता है और गैर-प्रोग्रामर कोड में अनजाने में परिवर्तन करने के खतरे के बिना कॉन्फ़िगरेशन तत्वों को संपादित करने की अनुमति देता है। कई डेवलपर्स संकलित भाषाओं में लिखे गए कार्यक्रमों के लिए ऐसा करते हैं क्योंकि वे उपयोगकर्ताओं से डेवलपर होने की उम्मीद नहीं करते हैं। कई कारणों से, व्याख्या की गई शेल भाषाओं के साथ ऐसा करना भी समझ में आता है।
सामान्य तरीका
कई अन्य भाषाओं की तरह, आप बैश प्रोग्राम के लिए कोड लिख सकते हैं जो ASCII टेक्स्ट कॉन्फ़िगरेशन फ़ाइलों को पढ़ता है और पार्स करता है, चर नाम पढ़ता है, और प्रोग्राम कोड निष्पादित होने पर मान सेट करता है। उदाहरण के लिए, एक कॉन्फ़िगरेशन फ़ाइल इस तरह दिख सकती है:
var1=LinuxGeek46
var2=Opensource.com
प्रोग्राम उस फ़ाइल को पढ़ेगा, प्रत्येक पंक्ति को पार्स करेगा, और प्रत्येक चर में मान सेट करेगा।
सोर्सिंग
बैश सोर्सिंग . नामक चर को पार्स करने और सेट करने के लिए एक बहुत आसान विधि का उपयोग करता है . एक निष्पादन योग्य शेल प्रोग्राम से एक बाहरी फ़ाइल को सोर्स करना उस फ़ाइल की सामग्री को उसकी संपूर्णता में शेल प्रोग्राम में शामिल करने का एक सरल तरीका है। एक अर्थ में, यह बहुत हद तक संकलित भाषा की तरह है include
कथन जिसमें रनटाइम पर लाइब्रेरी फ़ाइलें शामिल हैं। ऐसी फ़ाइल में वैरिएबल असाइनमेंट सहित किसी भी प्रकार का बैश कोड शामिल हो सकता है।
हमेशा की तरह, समझाने की तुलना में प्रदर्शित करना आसान है।
सबसे पहले, एक ~/bin
बनाएं निर्देशिका (यदि यह पहले से मौजूद नहीं है), और इसे वर्तमान कार्यशील निर्देशिका (पीडब्ल्यूडी) बनाएं। Linux फाइल सिस्टम पदानुक्रमित मानक ~/bin
. को परिभाषित करता है उपयोगकर्ताओं के लिए उनकी निष्पादन योग्य फ़ाइलों को संग्रहीत करने के लिए उपयुक्त स्थान के रूप में।
इस निर्देशिका में एक नई फ़ाइल बनाएँ। इसे नाम दें main
और इसे निष्पादन योग्य बनाएं:
[dboth@david bin]$ touch main
[dboth@david bin]$ chmod +x main
[dboth@david bin]$
इस निष्पादन योग्य फ़ाइल में निम्न सामग्री जोड़ें:
#!/bin/bash
Name="LinuxGeek"
echo $Name
और इस बैश प्रोग्राम को निष्पादित करें:
[dboth@david bin]$ ./main
LinuxGeek
[dboth@david bin]$
एक नई फ़ाइल बनाएँ और इसे ~/bin/data
कहें . इस फ़ाइल को निष्पादन योग्य होने की आवश्यकता नहीं है। इसमें निम्नलिखित जानकारी जोड़ें:
# Sourced code and variables
echo "This is the sourced code from the data file."
FirstName="David"
LastName="Both"
main
. में तीन पंक्तियाँ जोड़ें प्रोग्राम ताकि यह इस तरह दिखे:
#!/bin/bash
Name="LinuxGeek"
echo $Name
source ~/bin/data
echo "First name: $FirstName"
echo "LastName: $LastName"
कार्यक्रम को फिर से चलाएँ:
[dboth@david bin]$ ./main
LinuxGeek
This is the sourced code from the data file.
First name: David
LastName: Both
[dboth@david bin]$
सोर्सिंग के बारे में जानने के लिए एक और बहुत अच्छी बात है। आप एक बिंदु का उपयोग कर सकते हैं (.
) source
. के शॉर्टकट के रूप में आज्ञा। main
बदलें .
source
. के स्थान पर :
#!/bin/bash
Name="LinuxGeek"
echo $Name
. ~/bin/data
echo "First name: $FirstName"
echo "LastName: $LastName"
और प्रोग्राम को फिर से चलाएँ। परिणाम बिल्कुल पिछले रन जैसा ही होना चाहिए।
बैश शुरू करना
प्रत्येक लिनक्स होस्ट जो बैश का उपयोग करता है - जो कि उन सभी के लिए बहुत अधिक है क्योंकि बैश सभी वितरणों के लिए डिफ़ॉल्ट शेल है - इसमें सोर्सिंग के कुछ उत्कृष्ट, अंतर्निहित उदाहरण शामिल हैं।
जब भी कोई बैश शेल शुरू होता है, तो उसके वातावरण को कॉन्फ़िगर किया जाना चाहिए ताकि वह प्रयोग करने योग्य हो। बैश वातावरण को कॉन्फ़िगर करने के लिए उपयोग की जाने वाली पांच मुख्य फाइलें और एक निर्देशिका है। वे यहां उनके मुख्य कार्यों के साथ सूचीबद्ध हैं:
/etc/profile
:सिस्टम-व्यापी परिवेश और स्टार्टअप प्रोग्राम/etc/bashrc
:सिस्टम-व्यापी फ़ंक्शन और उपनाम/etc/profile.d/
:निर्देशिका जिसमें विभिन्न कमांड-लाइन टूल जैसेvim
को कॉन्फ़िगर करने के लिए सिस्टम-वाइड स्क्रिप्ट शामिल हैं औरmc
और कोई भी कस्टम कॉन्फ़िगरेशन स्क्रिप्ट जिसे sysadmin बनाता है~/.bash_profile
:उपयोगकर्ता-विशिष्ट वातावरण और स्टार्टअप कार्यक्रम~/.bashrc
:उपयोगकर्ता-विशिष्ट उपनाम और कार्य~/.bash_logout
:उपयोगकर्ता के लॉग आउट होने पर निष्पादित करने के लिए उपयोगकर्ता-विशिष्ट आदेश
इन फ़ाइलों के माध्यम से निष्पादन अनुक्रम का पता लगाने का प्रयास करें और यह निर्धारित करें कि यह गैर-लॉगिन बैश आरंभीकरण बनाम लॉग-इन बैश आरंभीकरण के लिए किस क्रम का उपयोग करता है। मैंने इसे अपनी Linux प्रशिक्षण श्रृंखला के खंड 1 के अध्याय 17 में किया था, लिनक्स का उपयोग और व्यवस्थापन:ज़ीरो से sysadmin ।
मैं आपको एक संकेत दूंगा। यह सब ~/.bashrc
. से शुरू होता है स्क्रिप्ट।
निष्कर्ष
इस लेख ने बैश प्रोग्राम में कोड और वेरिएबल असाइनमेंट को खींचने के लिए सोर्सिंग की खोज की। कॉन्फ़िगरेशन फ़ाइल से चर को पार्स करने की यह विधि तेज़, आसान और लचीली है। यह गैर-प्रोग्रामर को उन चरों के मान सेट करने की अनुमति देने के लिए बैश कोड को चर असाइनमेंट से अलग करने की एक विधि प्रदान करता है।