.Bashrc फ़ाइल क्या है?


100

.bashrcफ़ाइल को पढ़ना शुरू करते समय यूनिक्स के गोले और उसमें लिखी आज्ञाओं को निष्पादित करें। यह फ़ाइल क्या है और यह क्या निष्पादित करती है?


2
पाठ संपादक में फ़ाइल खोलने का प्रयास करें - यह सादे पाठ में है।
विल Bickford

जवाबों:


66

दरअसल, यह bashविशेष रूप से है कि .bashrc(और /etc/bash.bashrc) पढ़ता है । बहुत सारे अलग-अलग गोले हैं।

बैश मैन पेज (ब्रायन फॉक्स और चेत रमी द्वारा; जानकारी पृष्ठ "बैश स्टार्टअप फाइल्स" ) आधिकारिक विवरण है:

जब एक इंटरेक्टिव शेल जो कि लॉगिन शेल नहीं है, तो bash पढ़ता है और कमांड से निष्पादित करता है ~/.bashrc, यदि वह फ़ाइल मौजूद है। --norcविकल्प का उपयोग करके इसे बाधित किया जा सकता है । --rcfileफ़ाइल विकल्प पढ़ सकते हैं और के बजाय फ़ाइल से आदेश पर अमल करने के लिए पार्टी के लिए बाध्य करेगा ~/.bashrc

जब बैश को गैर-अंतःक्रियात्मक रूप से शुरू किया जाता है, तो शेल स्क्रिप्ट को चलाने के लिए, उदाहरण के लिए, यह BASH_ENVपर्यावरण में चर की तलाश करता है, अगर यह वहां दिखाई देता है, तो इसके मूल्य का विस्तार करता है, और पढ़ने और निष्पादित करने के लिए फ़ाइल के नाम के रूप में विस्तारित मूल्य का उपयोग करता है। बैश ऐसा व्यवहार करता है जैसे कि निम्नलिखित आदेश निष्पादित किए गए थे:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

लेकिन PATHचर का मान फ़ाइल नाम के लिए खोज करने के लिए उपयोग नहीं किया जाता है।

फ़ाइल केवल शेल कमांड है। यह आमतौर पर संकेतों को बदलने, पर्यावरण चर सेट करने और शेल प्रक्रियाओं को परिभाषित करने के लिए उपयोग किया जाता है। परंपरागत रूप से, फ़ाइल .profileका उपयोग इस उद्देश्य के लिए किया जाता है, लेकिन bashइसमें इतने विस्तार हैं कि इसे उपयोगकर्ताओं के लिए अपनी स्टार्टअप फ़ाइल की आवश्यकता है जो स्टार्टअप फ़ाइलों में bashism डालना चाहते हैं ।

" लॉगिन लॉग नहीं " का अर्थ है स्क्रिप्ट लॉन्च जैसी चीजें और आमतौर पर टर्मिनल विंडो जो विंडो मैनेजरों द्वारा शुरू की जाती हैं। कभी-कभी मेरे पास सिर्फ .bashrcऔर BASH_ENVसिर्फ स्रोत के लिए * निक्स सिस्टम होते हैं .profile। जब तक आप POSIX शेल कमांड के बाहर नहीं भटके, तब तक आपको किसी भी शेल में एक ही इनिशियलाइज़ेशन मिलेगा।

यह विशेष रूप से मूल्यवान है जब shवास्तव में bashऐसा होता है, जो कभी-कभी होता है। इस प्रयोग को करने के लिए:

. .profile

एक कारण यह सब इतना जटिल है क्योंकि कभी-कभी लोग उन चीजों को डालते हैं जो आउटपुट को शेल स्टार्टअप फ़ाइलों में डालते हैं, या वे बिना शर्त के संकेत देते हैं। जब शेल प्रोग्राम और भाषाओं के भीतर बैकलिट कमांड चलाते हैं, तो system(3)सी प्रोग्राम से उल्लेख नहीं करने पर बहुत सारी समस्याएं होती हैं। जिस तरह से bashशुरू किया गया है, मुझे लगता है कि एक फाइल है, जहां आउटपुट और प्रॉम्प्ट सेटिंग ठीक है और एक फाइल जहां यह नहीं है। परंपरागत रूप से, एक रन-टाइम परीक्षण अन्तरक्रियाशीलता को भेद करने के लिए किया जाएगा, उदाहरण के लिए, यह देखने के लिए जाँच करें कि क्या संकेत निर्धारित है।


अच्छा उत्तर। बस कुछ उद्धरण: फ़ाइल सिर्फ शेल कमांड है। यह आमतौर पर संकेतों को बदलने, पर्यावरण चर सेट करने और शेल प्रक्रियाओं को परिभाषित करने के लिए उपयोग किया जाता है।
smwikipedia

2
क्या किसी को पता है कि .bashrc / .zshrc का आरसी हिस्सा क्या है?
वर्कस


शायद आरसी का मतलब रनटाइम कॉन्फ़िगरेशन है।
माइक डाइनेन

12

जब बैश शुरू होता है, तो यह विभिन्न स्क्रिप्ट्स में कमांड को निष्पादित करता है।

जब बैश को एक इंटरेक्टिव लॉगिन शेल के रूप में आमंत्रित किया जाता है, तो यह पहले फाइल / etc / प्रोफाइल से कमांड को पढ़ता है और निष्पादित करता है, यदि वह फाइल मौजूद है। उस फ़ाइल को पढ़ने के बाद, यह उस क्रम में ~ / .bash_profile, ~ / .bash_login और ~ / .profile की तलाश करता है, और पहले मौजूद से कमांड पढ़ता और कार्यान्वित करता है जो कि पढ़ने योग्य है।

जब कोई लॉगिन शेल बाहर निकलता है, तो बैश फ़ाइल से आदेशों को पढ़ता है और निष्पादित करता है ~ / .bash_logout, यदि यह मौजूद है।

जब एक इंटरेक्टिव शेल जो लॉगिन शेल नहीं होता है, तो बैश, इस फाइल के मौजूद होने पर ~ / .bashrc से कमांड पढ़ता और निष्पादित करता है। यह --norc विकल्प के उपयोग से बाधित हो सकता है। --Rcfile फ़ाइल विकल्प, बैश को ~ / .bashrc के बजाय फ़ाइल से कमांड को पढ़ने और निष्पादित करने के लिए मजबूर करेगा।

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

यहां कुछ ट्रिक्स और टिप्स दिए गए हैं:

http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

आइए हम शीघ्र सेट करने का प्रयास करें ताकि यह आज की तारीख और होस्टनाम प्रदर्शित कर सके:

PS1="\d \h $ "

1
क्यों है .profileके बाद .bash_profile? कोई तर्क?
पेसियर

10

इसमें आपके शेल के लिए विभिन्न "इनिशियलाइज़ेशन" कमांड्स होने चाहिए, जैसे:

  • उपयोगी उपनाम बनाना (उदाहरण के लिए alias ll='ls -l')।
  • PATH में और निर्देशिकाएँ जोड़ना।
  • नए पर्यावरण चर सेट करना।

उपनाम का क्या उपयोग है?
अनानास

2
@pineapple: एक उपनाम एक कमांड चलाने का एक तरीका है, जो लंबे समय तक हो सकता है, एक छोटे से। उदाहरण के लिए, उपनाम ll='ls -l'आपको कमांड llनिष्पादित करने के लिए ls -lटाइप करता है।
3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.