~ / .Profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc ... में क्या अंतर है?


68

एसओ और आस्कुबंटु पर प्रश्नों के उत्तर , (और हेडर पढ़ने के माध्यम से) के साथ , $HOMEऔर /etc/, कई फाइलों को इंगित करते हैं, जिनका उपयोग पर्यावरण चर सेट करने के लिए किया जा सकता है, जिसमें शामिल हैं:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

मैं उस फाइल को /etc/सभी उपयोगकर्ताओं के लिए काम करता हूं , जबकि फाइलें $HOMEउपयोगकर्ता-विशिष्ट हैं। मैं वह भी इकट्ठा करता हूं जो .profileलॉगिन पर .bashrcलोड होता /bin/bashहै जबकि निष्पादित होने पर लोड किया जाता है। मैं यह भी समझता हूं कि विभिन्न कार्यक्रमों में अलग-अलग सेटिंग्स फाइलें हैं (उदाहरण के .Rprofileलिए आर)। लेकिन मैं कुछ स्पष्टीकरण की सराहना करूंगा:

  • कर रहे हैं *rcऔर *profileफ़ाइलों मौलिक रूप से अलग?
  • ऐसी फ़ाइलों का दायरा क्या है (उदाहरण के लिए कौन सी फाइलें आमतौर पर लिनक्स के साथ उपयोग की जाती हैं)
  • क्या कोई पदानुक्रम है (उदाहरण के लिए .bashrcचर सेट करता है .settings)
  • फ़ाइलों के इस वर्ग के लिए एक अच्छा संदर्भ क्या है? इन फ़ाइलों में विकल्पों के लिए?

जुड़े हुए प्रश्न


3
में INVOCATIONअनुभाग देखें man bashFHSलिनक्स फाइल सिस्टम पर विकि लेख देखें । यह आपको एक अच्छी शुरुआत देगा और इन सवालों के एक जोड़े का जवाब देगा। पूर्ववर्ती डॉट वाली फ़ाइलें ( .) आमतौर पर उपयोगकर्ता-विशिष्ट होती हैं - वे उपयोगकर्ता की $HOMEनिर्देशिका में रहती हैं।

3
उन सभी को? वास्तव में?
इग्नासियो वाज़क्वेज़-अब्राम्स

@ इग्नासियोवेज़्केज़-अब्राम्स मैं विवरणों की तलाश नहीं कर रहा हूं, बस एक सामान्य विवरण कि वे कैसे संबंधित हैं और कब एक का दूसरे पर उपयोग किया जाना चाहिए।
अबे

जवाबों:


48

कॉन्फ़िगरेशन फ़ाइलों का संगठन आपके प्रश्नों की तुलना में कम समान है। कोई "वर्ग" नहीं है, कोई "पदानुक्रम" नहीं है, और कोई वैश्विक "कॉन्फ़िगरेशन czar" नहीं है और न ही समिति जो एक सामान्य वाक्यविन्यास या अन्य अच्छे स्वच्छ सामान्यीकरण का निर्णय लेती है जैसे आप चाहते हैं। वहाँ केवल की तरह अलग आवेदन की एक भीड़ है R, bash, screenऔर GNOME डेस्कटॉप वातावरण, जिनमें से सभी कार्यों को करने के अपने अपने तरीकों से है, तो आप प्रलेखन पर देखने के प्रत्येक व्यक्ति के कार्यक्रम किसी भी जवाब देने के लिए के लिए चाहिए विशिष्ट एक विशेष फ़ाइल के बारे में सवाल। यदि यह तदर्थ लगता है, ऐसा इसलिए है क्योंकि: अधिकांश यूनिक्स / लिनक्स सॉफ्टवेयर अलग-अलग लोगों द्वारा अलग-अलग उद्देश्यों के लिए विकसित किए गए थे, जो सभी कॉन्फ़िगरेशन के बारे में थोड़ा अलग तरीके से गए थे।

अपने अन्य प्रश्नों का उत्तर देने के लिए:

  • *rcऔर *profileइसका मतलब बहुत ज्यादा नहीं है, इसलिए इस सवाल का वास्तव में जवाब नहीं दिया जा सकता है। "आरसी" विन्यास फाइल के लिए आमतौर पर इस्तेमाल किया जाने वाला संक्षिप्त नाम या प्रत्यय है। इसकी व्युत्पत्ति प्राचीन काल में (कंप्यूटर वर्षों में) होती है, और संभवतः इसका मतलब है रन कमांड ( रनकॉम से )। सिर्फ इसलिए कि अनुप्रयोग एक ही शब्द का उपयोग करते हैं इसका मतलब यह नहीं है कि वे सम्मेलनों पर सहमत हैं। "प्रोफ़ाइल" एक बहुत कम आम प्रत्यय है।

  • "गुंजाइश" को परिभाषित करें। अधिकांश एप्लिकेशन अन्य गैर-संबंधित अनुप्रयोगों के साथ कॉन्फ़िगरेशन फ़ाइलों को साझा नहीं करते हैं। एक संभावित अपवाद है /etc/profileऔर .profile, जिसका उपयोग कई अलग-अलग गोले (कम से कम shऔर सहित bash) द्वारा किया जा सकता है । प्रत्येक रनिंग प्रक्रिया से जुड़ा एक पर्यावरण कहा जाता है जिसमें ऐसे चर शामिल हो सकते हैं जो उक्त प्रक्रिया के व्यवहार को प्रभावित कर सकते हैं। आम तौर पर, पर्यावरण चर उपयुक्त शेल कॉन्फ़िगरेशन फ़ाइलों या शायद जो भी ग्राफ़िकल डेस्कटॉप वातावरण आप उपयोग कर रहे हैं, की कॉन्फ़िगरेशन फ़ाइलों द्वारा सेट किए जाते हैं। "पुस्तकालयों" के लिए कॉन्फ़िगरेशन फाइलें भी हैं, जैसे .inputrcरीडलाइन और .gtkrc*जीटीके के लिए, जो लाइब्रेरी का उपयोग करने वाले प्रत्येक एप्लिकेशन को प्रभावित करेगा।

  • नहीं, कॉन्फ़िगरेशन फ़ाइलों के लिए कोई वैश्विक पदानुक्रम नहीं है। फिर, प्रलेखन के लिए विशेष कार्यक्रम के लिए सवाल में, उल्लेख, उदाहरण के लिए bashमैनुअल के लिए bash। एक सामान्य सम्मेलन जिस पर आप आमतौर पर भरोसा कर सकते हैं वह यह है कि $HOMEसिस्टम-वाइड कॉन्फ़िगरेशन में ओवरराइड में उपयोगकर्ता सेटिंग्स /etc। यह आमतौर पर सिस्टम एक के बाद उपयोगकर्ता फ़ाइल को पढ़कर पूरा किया जाता है, ताकि बाद में सेटिंग्स पहले वाले को अधिलेखित कर दें। हालांकि, यह कोई गारंटी नहीं है, और निश्चित उत्तरों के लिए आपको उस विशिष्ट कार्यक्रम के लिए प्रलेखन का उल्लेख करना चाहिए जिसका आप उपयोग कर रहे हैं।

  • कोई "वर्ग" नहीं है, कम से कम कोई भी सामान्य नहीं है जो आपके प्रश्न में सूचीबद्ध सभी फ़ाइलों को शामिल करने के लिए है, इसलिए इस तरह के "वर्ग" के लिए एक संदर्भ का प्रश्न मूट है। फिर से, आपके द्वारा उपयोग किए जा रहे विशिष्ट कार्यक्रम के प्रलेखन का संदर्भ लें।


5

मुझे लगता है कि यह प्रश्न इतने स्तरों पर बहुत व्यापक है, जैसे आप एक प्रश्न में कम से कम चार अलग-अलग कार्यक्रमों के बारे में सवाल पूछ रहे हैं । मैं केवल विन्यास फाइल के बीच अंतर पर गौर करेंगे /etcऔर $HOME

यूनिक्स, एक बहु-उपयोगकर्ता ऑपरेटिंग सिस्टम है इस लिए कई अलग अलग व्यक्तियों, एक प्रणाली का उपयोग कर सकते हैं या तो का उपयोग करके इसका मतलब है ssh, telnetया Xorg। अपने उपयोगकर्ताओं के लिए एक मानकीकृत कॉन्फ़िगरेशन प्रदान करने के लिए आप सिस्टम वाइड कॉन्फ़िगरेशन प्रदान कर सकते हैं /etc/, इसका उपयोग आमतौर पर आपके वितरण द्वारा उदाहरण के लिए bashया वैश्विक कॉन्फ़िगरेशन प्रदान करने के लिए भी किया जाता है screen

दूसरी ओर, कुछ उपयोगकर्ता अपने प्रोग्रामों के लिए सेटिंग्स को अनुकूलित करना चाहते हैं जैसे कि कीबाइंडिंग, रंग या लुक। यह उनके कॉन्फ़िगरेशन फ़ाइल के माध्यम से किया जाता है $HOME। तो संक्षेप में /etc/सिस्टम वाइड कॉन्फ़िगरेशन प्रदान करता है जबकि $ HOME में कॉन्फिग फाइल उपयोगकर्ताओं को सिस्टम वाइड कॉन्फ़िगरेशन को बदलने / ओवरराइड करने की अनुमति देती है।


3

जवाब का हिस्सा इस पोस्ट से आता है :

.bashrc एक शेल स्क्रिप्ट है जो बैश तब भी चलती है जब इसे अंतःक्रियात्मक रूप से शुरू किया जाता है।

कंट्रास्ट .bash_profileऔर .profileजो केवल एक नए लॉगिन शेल की शुरुआत में चलाए जाते हैं। (बैश-एल)

आप चुनते हैं कि क्या कोई कमांड .bashrcबनाम .bash_profileइस पर निर्भर करता है कि आप इसे एक बार चलाना चाहते हैं या हर इंटरेक्टिव शेल शुरू करना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.