सवाल .Profile .bash_profile और .bashrc के बीच कार्यात्मक अंतर क्या हैं


के बीच कार्यात्मक मतभेद क्या हैं .profile, .bash_profile तथा .bashrc फ़ाइलें?


120
2018-04-20 15:42


मूल




जवाब:


.bash_profile तथा .bashrc के लिए विशिष्ट हैं bash, जहाँ तक .profile अपने स्वयं के खोल-विशिष्ट विन्यास फाइलों की अनुपस्थिति में कई गोले द्वारा पढ़ा जाता है। (.profile मूल बोर्न शैल द्वारा इस्तेमाल किया गया था।) .bash_profile या .profile साथ में लॉगिन गोले द्वारा पढ़ा जाता है .bashrc; subshells केवल पढ़ने के लिए .bashrc। (नौकरी नियंत्रण और आधुनिक खिड़की प्रणाली के बीच, .bashrc अपने आप से ज्यादा उपयोग नहीं किया जाता है। यदि तुम प्रयोग करते हो screen या tmux, स्क्रीन / विंडोज आमतौर पर लॉगिन शैल के बजाय सबहेल चलाते हैं।)

इसके पीछे विचार यह था कि एक बार सेटअप किया गया था .profile (या इसके खोल-विशिष्ट संस्करण), और प्रति-शेल सामान द्वारा .bashrc। उदाहरण के लिए, आप आम तौर पर सत्र में एक बार पर्यावरण चर को लोड करना चाहते हैं, जब भी आप किसी सत्र में सबशेल लॉन्च करते हैं, जबकि आप हमेशा अपने उपनाम चाहते हैं (जो पर्यावरण चर के रूप में स्वचालित रूप से प्रचारित नहीं होते हैं)।

अन्य उल्लेखनीय खोल विन्यास फाइलें:

/etc/bash_profile (मैदान छोड़ना /etc/profile) उपयोगकर्ता के सामने पढ़ा जाता है .profile सिस्टम-व्यापी विन्यास के लिए, और इसी प्रकार /etc/bashrc subshells में (इस के लिए कोई फॉलबैक नहीं)। उबंटू समेत कई प्रणालियां भी एक का उपयोग करती हैं /etc/profile.d निर्देशिका जिसमें शैल स्क्रिप्टलेट हैं, जो हैं . (source) से /etc/profile; यहां के टुकड़े प्रति-खोल हैं, साथ *.sh सभी बोर्न / पॉज़िक्स संगत शैल और उस विशेष शैल पर लागू अन्य एक्सटेंशन के लिए आवेदन करना।


102
2018-04-20 15:51





.profile

.profile उन चीजों के लिए है जो विशेष रूप से संबंधित नहीं हैं Bash, पर्यावरण चर की तरह PATH और दोस्तों, और किसी भी समय उपलब्ध होना चाहिए।

उदाहरण के लिए, .profile ग्राफिकल डेस्कटॉप सत्र प्रारंभ करते समय भी लोड किया जाना चाहिए।


.bashrc

.bashrc इंटरैक्टिव बैश उपयोग को कॉन्फ़िगर करने के लिए है, जैसे Bash aliases, अपने पसंदीदा सेटिंग editor, सेटिंग Bash prompt, आदि।


.bash_profile

.bash_profile यह सुनिश्चित करने के लिए है कि दोनों चीजें हैं .profile तथा .bashrc के लिए लोड कर रहे हैं login shells

उदाहरण के लिए, .bash_profile कुछ आसान हो सकता है

. ~/.profile
. ~/.bashrc

अगर आप छोड़ना चाहते थे .bash_profile, केवल .profile लोड किया जाएगा।


31
2018-04-17 06:15



इसने मैक ओएस एक्स के लिए मेरे प्रश्न का उत्तर दिया - Jake Toronto


बैश मैन पेज के अनुसार, .bash_profile को लॉगिन शैल के लिए निष्पादित किया जाता है, जबकि .bashrc को इंटरैक्टिव गैर-लॉगिन शैल के लिए निष्पादित किया जाता है।

तो, लॉगिन या गैर-लॉगिन खोल क्या है?

जब आप कंसोल के माध्यम से लॉगिन करते हैं (उपयोगकर्ता नाम और पासवर्ड टाइप करते हैं), या तो मशीन पर बैठे हैं, या दूरस्थ रूप से ssh: .bash_profile के माध्यम से प्रारंभिक कमांड प्रॉम्प्ट से पहले अपने खोल को कॉन्फ़िगर करने के लिए निष्पादित किया जाता है। लेकिन, अगर आप पहले से ही अपनी मशीन में लॉग इन कर चुके हैं और जीनोम या केडीई के अंदर एक नई टर्मिनल विंडो (xterm) खोलें, तो विंडो कमांड प्रॉम्प्ट से पहले .bashrc को निष्पादित किया जाता है। .bashrc तब भी चलाया जाता है जब आप किसी टर्मिनल में टाइपिंग / bin / bash टाइप करके नया बैश उदाहरण प्रारंभ करते हैं।

टर्मिनल विंडो दिशानिर्देशों का अपवाद मैक ओएस एक्स का टर्मिनल.एप है, जो प्रत्येक नई टर्मिनल विंडो के लिए डिफ़ॉल्ट रूप से लॉगिन खोल चलाता है, .bashrc के बजाय .bash_profile को कॉल करता है। अन्य जीयूआई टर्मिनल अनुकरणकर्ता भी ऐसा ही कर सकते हैं, लेकिन अधिकांश ऐसा नहीं करते हैं।

यहां अधिक http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html


21
2018-04-03 12:52