के बीच कार्यात्मक क्या अंतर है .profile, .bash_profileऔर .bashrcफ़ाइलों?
के बीच कार्यात्मक क्या अंतर है .profile, .bash_profileऔर .bashrcफ़ाइलों?
जवाबों:
.bash_profileऔर .bashrcविशिष्ट हैं bash, जबकि .profileउनकी अपनी शेल-विशिष्ट कॉन्फ़िगरेशन फ़ाइलों की अनुपस्थिति में कई गोले द्वारा पढ़ा जाता है। ( .profileमूल बॉर्न शेल द्वारा उपयोग किया गया था।) .bash_profileया .profileलॉगिन शेल द्वारा पढ़ा जाता है, साथ में .bashrc; उपधाराएं केवल पढ़ी जाती हैं .bashrc। (जॉब कंट्रोल और आधुनिक विंडोिंग सिस्टम के बीच, .bashrcखुद से ज्यादा इस्तेमाल नहीं किया जाता है। यदि आप उपयोग करते हैं screenया tmux, स्क्रीन / विंडो आमतौर पर लॉगिन शेल के बजाय उप-भाग चलाते हैं।)
इसके पीछे विचार यह था कि एक-बार सेटअप द्वारा .profile(या शेल-विशिष्ट संस्करण), और प्रति-शेल सामान द्वारा किया गया था .bashrc। उदाहरण के लिए, आप आम तौर पर प्रति सत्र एक बार पर्यावरण वैरिएबल को लोड करना चाहते हैं, बजाय इसके कि आप किसी सत्र में एक उप-संस्करण लॉन्च करने के बाद उन्हें कभी भी हटा दें, जबकि आप हमेशा चाहते हैं कि आपके उपनाम (जो पर्यावरण चर की तरह स्वचालित रूप से प्रचारित न हों)।
अन्य उल्लेखनीय शैल कॉन्फिग फाइल:
/etc/bash_profile(फ़ॉलबैक /etc/profile) .profileसिस्टम-वाइड कॉन्फ़िगरेशन के लिए उपयोगकर्ता के पहले पढ़ा जाता है, और इसी तरह /etc/bashrcसबस्क्रिप्शन (इस एक के लिए कोई फ़ॉलबैक नहीं)। उबंटू सहित कई प्रणालियां /etc/profile.dशेल स्क्रिप्टलेट युक्त निर्देशिका का उपयोग करती हैं, जो .( source) से -ed हैं /etc/profile; *.shसभी बॉर्न / POSIX संगत गोले और उस विशेष शेल पर लागू होने वाले अन्य एक्सटेंशन के साथ यहां टुकड़े प्रति- शेल हैं।
.profile
.profileउन चीजों के लिए है जो विशेष रूप से Bashपर्यावरण चर PATHऔर दोस्तों से संबंधित नहीं हैं , और कभी भी उपलब्ध होनी चाहिए।
उदाहरण के लिए, .profileएक ग्राफिकल डेस्कटॉप सत्र शुरू करते समय भी लोड किया जाना चाहिए।
.bashrc
.bashrcइंटरएक्टिव बैश के उपयोग को कॉन्फ़िगर करने के लिए है, जैसे Bash aliases, अपना पसंदीदा editorसेट करना Bash prompt, सेट करना , आदि।
.bash_profile
.bash_profile यह सुनिश्चित करने के लिए है कि दोनों चीज़ें अंदर .profileऔर के .bashrcलिए भरी हुई हैं login shells।
उदाहरण के लिए, .bash_profileजैसे कुछ सरल हो सकता है
. ~/.profile
. ~/.bashrc
यदि आप छोड़ना चाहते थे .bashrc, तो केवल .profileलोड किया जाएगा।
बैश मैन पेज के अनुसार, .bash_profileलॉगिन गोले के .bashrcलिए निष्पादित किया जाता है , जबकि इंटरैक्टिव गैर-लॉगिन शेल के लिए निष्पादित किया जाता है।
तो, एक लॉगिन या गैर-लॉगिन शेल क्या है?
जब आप कंसोल के माध्यम से (टाइप यूज़रनेम और पासवर्ड) लॉगिन करते हैं, या तो मशीन पर बैठे, या ssh के माध्यम से दूर: .bash_profileप्रारंभिक कमांड प्रॉम्प्ट से पहले अपने शेल को कॉन्फ़िगर करने के लिए निष्पादित किया जाता है। लेकिन, यदि आपने पहले ही अपनी मशीन में लॉग इन किया है और Gnome या KDE के अंदर एक नई टर्मिनल विंडो (xterm) खोलते हैं, तो .bashrcविंडो कमांड प्रॉम्प्ट से पहले निष्पादित किया जाता है। .bashrcयह तब भी चलाया जाता है जब आप /bin/bashएक टर्मिनल में टाइप करके नया बैश इंस्टेंस शुरू करते हैं ।
टर्मिनल विंडो दिशानिर्देशों का एक अपवाद मैक ओएस एक्स का टर्मिनल .bash_profileहै .bashrc। इसके बजाय , प्रत्येक नई टर्मिनल विंडो के लिए डिफ़ॉल्ट रूप से लॉगिन शेल चलाता है, जिसके बजाय कॉलिंग है । अन्य जीयूआई टर्मिनल एमुलेटर भी ऐसा कर सकते हैं, लेकिन अधिकांश ऐसा नहीं करते हैं।
अधिक यहाँ ।