के बीच कार्यात्मक क्या अंतर है .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
। इसके बजाय , प्रत्येक नई टर्मिनल विंडो के लिए डिफ़ॉल्ट रूप से लॉगिन शेल चलाता है, जिसके बजाय कॉलिंग है । अन्य जीयूआई टर्मिनल एमुलेटर भी ऐसा कर सकते हैं, लेकिन अधिकांश ऐसा नहीं करते हैं।
अधिक यहाँ ।