यह एक तरह से जटिल है। सबसे पहले, विवरण इस बात पर निर्भर करता है कि आप किस प्रकार का शेल चला रहे हैं। खुद को ख़ुश करने के लिए :
जब आप एक टर्मिनल एमुलेटर खोलते हैं ( gnome-terminal
उदाहरण के लिए), तो आप निष्पादित कर रहे हैं जिसे एक इंटरैक्टिव, गैर-लॉगिन शेल के रूप में जाना जाता है ।
जब आप कमांड लाइन से अपनी मशीन में लॉग इन करते हैं, या जैसे कमांड चलाते su - username
हैं, तो आप एक इंटरेक्टिव लॉगिन शेल चला रहे हैं ।
जब आप ग्राफ़िकल रूप से लॉग इन करते हैं, तो आप कुछ पूरी तरह से अलग चल रहे हैं। विवरण आपके सिस्टम और चित्रमय वातावरण पर निर्भर करेगा लेकिन सामान्य तौर पर, यह ग्राफ़िकल शेल है जो आपके लॉगिन से संबंधित है। जबकि कई ग्राफिकल गोले (उबंटू डिफ़ॉल्ट सहित) पढ़ेंगे /etc/profile
और ~/.profile
उनमें से सभी नहीं करेंगे ।
अंत में, जब आप एक शेल स्क्रिप्ट चलाते हैं, तो यह एक गैर-इंटरैक्टिव, गैर-लॉगिन शेल में चलाया जाता है ।
लॉन्च होने पर बैश होने वाली फाइलें शेल के प्रकार पर निर्भर करती हैं। निम्नलिखित man bash
(इस पर जोर) खंड के निवेश का एक अंश है :
जब बैश को एक इंटरेक्टिव लॉगिन शेल के रूप में या एक गैर-इंटरेक्टिव शेल के रूप में - एल्गिन विकल्प के रूप में लागू किया जाता है , तो यह पहले फ़ाइल / आदि / प्रोफाइल से कमांड को पढ़ता है और निष्पादित करता है , यदि वह फ़ाइल मौजूद है। उस फ़ाइल को पढ़ने के बाद, यह उस क्रम में ~ / .bash_profile, ~ / .bash_login और ~ / .profile की तलाश करता है, और पहले मौजूद से कमांड पढ़ता और निष्पादित करता है और पढ़ने योग्य होता है। जब इस व्यवहार को रोकने के लिए शेल शुरू किया जाता है - तो नोप्रोफाइल विकल्प का उपयोग किया जा सकता है।
जब एक इंटरेक्टिव शेल जो लॉगिन शेल नहीं है, तो bash पढ़ता है और /etc/bash.bashrc और ~ / .bashrc से कमांड निष्पादित करता है , अगर ये फाइलें मौजूद हैं। यह --norc विकल्प के उपयोग से बाधित हो सकता है। --Rcfile फ़ाइल विकल्प bet को /etc/bash.bashrc और ~ / .bashrc के बजाय फ़ाइल से कमांड को पढ़ने और निष्पादित करने के लिए बाध्य करेगा।
वे आरंभीकरण फ़ाइलें हैं। आपके पास /etc/environment
वह स्थान भी है जहां आप वैश्विक पर्यावरण चर सेट कर सकते हैं लेकिन यह खट्टा होने के बजाय पढ़ा जाता है (इसके अंदर कमांड निष्पादित नहीं होती हैं लेकिन चर परिभाषाएं सेट की जाती हैं)।
अब, आपके द्वारा देखा गया अभिवादन फिर से कुछ और है। इसके /etc/motd
माध्यम से सेट किया जाता है और प्रदर्शित किया जाता है pam_motd
। जैसा कि समझाया गया है man motd
:
/ Etc / motd की सामग्री एक सफल लॉगिन के बाद pam_motd (8) द्वारा प्रदर्शित की जाती है लेकिन लॉगिन शेल को निष्पादित करने से ठीक पहले।
संक्षिप्त नाम "motd" का अर्थ "दिन का संदेश" होता है, और इस फ़ाइल को पारंपरिक रूप से ठीक उसी के लिए उपयोग किया जाता है (इसमें सभी उपयोगकर्ताओं के लिए मेल की तुलना में बहुत कम डिस्क स्थान की आवश्यकता होती है)।
डेबियन जीएनयू / लिनक्स पर, /run/motd.dynamic की सामग्री भी प्रदर्शित की जाती है। यह फ़ाइल बूट पर /etc/init.d/motd द्वारा जनरेट की गई है।
संदेश को निकालने के लिए बस /etc/motd
फ़ाइल को खाली करें और सुनिश्चित करें कि /etc/init.d/motd
यदि मौजूद है तो कुछ भी उत्पन्न नहीं हो रहा है ।
वैसे भी, आपके द्वारा दिखाए जाने वाले आउटपुट के आधार पर, आपको लगता है ssh
कि आप लॉग इन कर रहे हैं, जिसका अर्थ है कि आप एक इंटरेक्टिव लॉगिन शेल चला रहे हैं , इसका मतलब है कि ऊपर देखें। तो, संक्षेप में, जब आप लॉग इन करते हैं (और इस क्रम में) तो आपको जिन चीज़ों की परवाह है, वे खट्टी हैं:
- एसएसएच डेमन,
pam_motd
पीएएम पुस्तकालय के मॉड्यूल के माध्यम से , की सामग्री को प्रदर्शित करता है /etc/motd
। pam_env
मॉड्यूल के माध्यम से , यह /etc/environment
और से पर्यावरण चर सेट करता है ~/.pam_environment
।
- एक लॉगिन शेल शुरू किया गया है, और निम्न फाइलें क्रम में पढ़ी जाती हैं:
/etc/profile
/etc/bash.bashrc
(डिफ़ॉल्ट उबंटू /etc/profile
स्रोत /etc/bash.bashrc
)।
~/.bash_profile
। अन्य फ़ाइलें जो यहां पढ़ी जा सकती थीं ( ~/.profile
और ~/.bash_login
) क्योंकि ~/.bash_profile
मौजूद हैं उन्हें नजरअंदाज कर दिया गया है।
export SET_IN_ETC_PROFILE=yes
में/etc/profile
,export SET_IN_HOME_ZSHRC=yes
में~/.zhshrc
रिबूट (मैं एक zsh उपयोगकर्ता हूँ), आदि ... तो फिर और एक अच्छाenv|grep SET_IN
आप सभी कहानी सुनाता हूँ। यह देखने के लिए कि डेस्कटॉप एप्लिकेशन द्वारा कौन से चर देखे जाते हैं (जिन्हें आप डैश या WM से लॉन्च करते हैं, टर्मिनल का उपयोग किए बिना), askubuntu.com/a/356973/16395