लिनक्स एक मल्टी-यूजर, टाइम-शेयरिंग सिस्टम है, जिसका अर्थ है कि एक से अधिक उपयोगकर्ता लॉग इन कर सकते हैं और सिस्टम का उपयोग कर सकते हैं। और सिस्टम एडमिनिस्ट्रेटर्स का कार्य विभिन्न पहलुओं को प्रबंधित करना है कि कैसे अलग-अलग उपयोगकर्ता सॉफ्टवेयर इंस्टॉल/अपडेट/हटाने, वे कौन से प्रोग्राम चला सकते हैं, वे कौन सी फ़ाइलें देख/संपादित कर सकते हैं, आदि के संदर्भ में सिस्टम को संचालित कर सकते हैं।
लिनक्स उपयोगकर्ताओं के वातावरण को दो प्रमुख तरीकों से बनाने या बनाए रखने की अनुमति देता है: सिस्टम-वाइड (ग्लोबल) और यूजर-स्पेसिफिक (पर्सनल) कॉन्फ़िगरेशन का उपयोग करके। आमतौर पर, लिनक्स सिस्टम के साथ काम करने की बुनियादी विधि शेल है, और शेल एक वातावरण बनाता है जो एक सफल उपयोगकर्ता लॉगिन के बाद इसके इनिशियलाइज़ेशन के दौरान पढ़ी जाने वाली कुछ फ़ाइलों पर निर्भर करता है।
सुझाया गया पढ़ें: लिनक्स में एनवायरनमेंट वेरिएबल्स कैसे सेट करें
इस लेख में, हम लिनक्स में लोकल यूजर मैनेजमेंट के संबंध में यूजर प्रोफाइल के संबंध में शेल इनिशियलाइज़ेशन फ़ाइलों की व्याख्या करेंगे। हम आपको बताएंगे कि कस्टम शेल फंक्शन्स, एलियास, वेरिएबल्स के साथ-साथ स्टार्टअप प्रोग्राम्स कहां रखें।
महत्वपूर्ण: इस लेख के उद्देश्य के लिए, हम bash पर ध्यान केंद्रित करेंगे, एक sh संगत शेल जो वहां लिनक्स सिस्टम पर सबसे लोकप्रिय/उपयोग किया जाने वाला शेल है।
यदि आप एक अलग शेल (zsh, ash, fish आदि..) प्रोग्राम उपयोग कर रहे हैं, तो यहां हमारे द्वारा चर्चा की जाने वाली कुछ संबंधित फ़ाइलों के बारे में अधिक जानने के लिए इसके डॉक्यूमेंटेशन को पढ़ें।
लिनक्स में शेल इनिशियलाइज़ेशन
जब शेल को आमंत्रित किया जाता है, तो कुछ इनिशियलाइज़ेशन/स्टार्टअप फ़ाइलें होती हैं जिन्हें यह पढ़ता है जो शेल के लिए और सिस्टम उपयोगकर्ता के लिए एक वातावरण स्थापित करने में मदद करती हैं; जो पूर्वनिर्धारित (और अनुकूलित) फंक्शन्स, वेरिएबल्स, एलियास आदि हैं।
शेल द्वारा पढ़ी जाने वाली इनिशियलाइज़ेशन फ़ाइलों की दो श्रेणियां हैं:
- सिस्टम-वाइड स्टार्टअप फ़ाइलें – इनमें ग्लोबल कॉन्फ़िगरेशन होते हैं जो सिस्टम पर सभी उपयोगकर्ताओं पर लागू होते हैं, और आमतौर पर /etc डायरेक्टरी में स्थित होते हैं। इनमें शामिल हैं: /etc/profiles और /etc/bashrc या /etc/bash.bashrc।
- यूजर-स्पेसिफिक स्टार्टअप फ़ाइलें – ये सिस्टम पर एकल उपयोगकर्ता पर लागू होने वाले कॉन्फ़िगरेशन संग्रहीत करती हैं और आमतौर पर उपयोगकर्ताओं की होम डायरेक्टरी में डॉट फ़ाइलों के रूप में स्थित होती हैं। वे सिस्टम-वाइड कॉन्फ़िगरेशन को ओवरराइड कर सकते हैं। इनमें शामिल हैं: .profiles, .bash_profile, .bashrc और .bash_login।
फिर से, शेल को तीन संभावित मोड में आमंत्रित किया जा सकता है:
1. इंटरैक्टिव लॉगिन शेल
शेल को एक उपयोगकर्ता द्वारा सिस्टम में सफलतापूर्वक लॉग इन करने के बाद आमंत्रित किया जाता है, /bin/login का उपयोग करके, /etc/passwd फ़ाइल में संग्रहीत क्रेडेंशियल्स पढ़ने के बाद।
जब शेल को इंटरैक्टिव लॉगिन शेल के रूप में शुरू किया जाता है, तो यह /etc/profile और इसके यूजर-स्पेसिफिक समकक्ष ~/.bash_profile को पढ़ता है।
2. इंटरैक्टिव नॉन-लॉगिन शेल
शेल को कमांड-लाइन पर शेल प्रोग्राम का उपयोग करके शुरू किया जाता है, उदाहरण के लिए $/bin/bash या $/bin/zsh। इसे /bin/su कमांड चलाकर भी शुरू किया जा सकता है।
इसके अलावा, एक इंटरैक्टिव नॉन-लॉगिन शेल को ग्राफिकल एनवायरनमेंट के भीतर konsole, terminator या xterm जैसे टर्मिनल प्रोग्राम के साथ भी आमंत्रित किया जा सकता है।
जब शेल इस स्थिति में शुरू होता है, तो यह मूल शेल के वातावरण को कॉपी करता है, और अतिरिक्त स्टार्टअप कॉन्फ़िगरेशन निर्देशों के लिए यूजर-स्पेसिफिक ~/.bashrc फ़ाइल पढ़ता है।
$ su # ls -la
3. नॉन-इंटरैक्टिव शेल
शेल को तब आमंत्रित किया जाता है जब एक शेल स्क्रिप्ट चल रही होती है। इस मोड में, यह एक स्क्रिप्ट (शेल या सामान्य सिस्टम कमांड्स/फंक्शन्स का सेट) प्रोसेस कर रहा होता है और जब तक अन्यथा न हो, कमांड्स के बीच उपयोगकर्ता इनपुट की आवश्यकता नहीं होती। यह मूल शेल से विरासत में मिले वातावरण का उपयोग करके काम करता है।
सिस्टम-वाइड शेल स्टार्टअप फ़ाइलों को समझना
इस खंड में, हम उन शेल स्टार्टअप फ़ाइलों पर अधिक प्रकाश डालेंगे जो सिस्टम पर सभी उपयोगकर्ताओं के लिए कॉन्फ़िगरेशन संग्रहीत करती हैं और इनमें शामिल हैं:
/etc/profile फ़ाइल – यह लॉगिन सेटअप के लिए सिस्टम-वाइड एनवायरनमेंट कॉन्फ़िगरेशन और स्टार्टअप प्रोग्राम्स संग्रहीत करती है। वे सभी कॉन्फ़िगरेशन जो आप सभी सिस्टम उपयोगकर्ताओं के वातावरण पर लागू करना चाहते हैं, इस फ़ाइल में जोड़े जाने चाहिए।
उदाहरण के लिए, आप यहां ग्लोबल PATH एनवायरनमेंट वेरिएबल सेट कर सकते हैं।
# cat /etc/profile
नोट: RHEL/CentOS 7 जैसे कुछ सिस्टम्स में, आपको ऐसी चेतावनियां मिलेंगी जैसे "इस फ़ाइल को बदलने की अनुशंसा नहीं की जाती जब तक आप नहीं जानते कि आप क्या कर रहे हैं। अपने एनवायरनमेंट में कस्टम बदलाव करने के लिए /etc/profile.d/ में एक कस्टम .sh शेल स्क्रिप्ट बनाना बेहतर है, क्योंकि यह भविष्य के अपडेट में मर्जिंग की आवश्यकता को रोकेगा"।
/etc/profile.d/ डायरेक्टरी – आपके एनवायरनमेंट में कस्टम बदलाव करने के लिए उपयोग की जाने वाली शेल स्क्रिप्ट्स संग्रहीत करती है:
# cd /etc/profile.d/ # ls -l
/etc/bashrc या /etc/bash.bashrc फ़ाइल – इसमें सिस्टम-वाइड फंक्शन्स और एलियास सहित अन्य कॉन्फ़िगरेशन होते हैं जो सभी सिस्टम उपयोगकर्ताओं पर लागू होते हैं।
यदि आपके सिस्टम में कई प्रकार के शेल हैं, तो बैश-विशिष्ट कॉन्फ़िगरेशन को इस फ़ाइल में रखना एक अच्छा विचार है।
# cat /etc/bashrc
यूजर-स्पेसिफिक शेल स्टार्टअप फ़ाइलों को समझना
अब, हम यूजर-स्पेसिफिक शेल (बैश) स्टार्टअप डॉट फ़ाइलों के बारे में अधिक बताएंगे, जो सिस्टम पर एक विशेष उपयोगकर्ता के लिए कॉन्फ़िगरेशन संग्रहीत करती हैं, वे उपयोगकर्ता की होम डायरेक्टरी में स्थित होती हैं और इनमें शामिल हैं:
# ls -la
~/.bash_profile फ़ाइल – यह यूजर स्पेसिफिक एनवायरनमेंट और स्टार्टअप प्रोग्राम्स कॉन्फ़िगरेशन संग्रहीत करती है। आप यहां अपना कस्टम PATH एनवायरनमेंट वेरिएबल सेट कर सकते हैं, जैसा स्क्रीनशॉट में दिखाया गया है:
# cat ~/.bash_profile
~/.bashrc फ़ाइल – यह फ़ाइल यूजर स्पेसिफिक एलियास और फंक्शन्स संग्रहीत करती है।
# cat ~/.bashrc
~/.bash_login फ़ाइल – इसमें विशिष्ट कॉन्फ़िगरेशन होते हैं जो आमतौर पर केवल तभी निष्पादित होते हैं जब आप सिस्टम में लॉग इन करते हैं। जब ~/.bash_profile अनुपस्थित होता है, तो इस फ़ाइल को बैश द्वारा पढ़ा जाएगा।
~/.profile फ़ाइल – यह फ़ाइल ~/.bash_profile और ~/.bash_login की अनुपस्थिति में पढ़ी जाती है; यह समान कॉन्फ़िगरेशन संग्रहीत कर सकती है, जो सिस्टम पर अन्य शेल्स द्वारा भी पहुंच योग्य हो सकते हैं। क्योंकि हमने मुख्य रूप से यहां बैश के बारे में बात की है, ध्यान दें कि अन्य शेल्स बैश सिंटैक्स को नहीं समझ सकते हैं।
अगला, हम दो अन्य महत्वपूर्ण यूजर स्पेसिफिक फ़ाइलों की भी व्याख्या करेंगे जो आवश्यक रूप से बैश इनिशियलाइज़ेशन फ़ाइलें नहीं हैं:
~/.bash_history फ़ाइल – बैश उपयोगकर्ता द्वारा सिस्टम पर दर्ज कमांड्स का इतिहास रखता है। कमांड्स की यह सूची उपयोगकर्ता की होम डायरेक्टरी में ~/.bash_history फ़ाइल में रखी जाती है।
इस सूची को देखने के लिए, टाइप करें:
$ history or $ history | less
~/.bash_logout फ़ाइल – इसका उपयोग शेल स्टार्टअप के लिए नहीं किया जाता, बल्कि लॉगआउट प्रक्रिया के लिए यूजर स्पेसिफिक निर्देश संग्रहीत करता है। इसे तब पढ़ा और निष्पादित किया जाता है जब कोई उपयोगकर्ता इंटरैक्टिव लॉगिन शेल से बाहर निकलता है।
एक व्यावहारिक उदाहरण लॉगआउट पर टर्मिनल विंडो को साफ़ करना होगा। यह रिमोट कनेक्शन के लिए महत्वपूर्ण है, जो उन्हें बंद करने के बाद एक साफ विंडो छोड़ देगा:
# cat bash_logout
अतिरिक्त अंतर्दृष्टि के लिए, विभिन्न लिनक्स डिस्ट्रोज पर इन शेल इनिशियलाइज़ेशन फ़ाइलों की सामग्री देखें और बैश मैन पेज पढ़ें:
अभी के लिए बस इतना ही! इस लेख में, हमने लिनक्स में शेल स्टार्टअप/इनिशियलाइज़ेशन फ़ाइलों की व्याख्या की। हमें लिखने के लिए नीचे दिए गए कमेंट फॉर्म का उपयोग करें।