जवाबों:
दरअसल, यह 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
शुरू किया गया है, मुझे लगता है कि एक फाइल है, जहां आउटपुट और प्रॉम्प्ट सेटिंग ठीक है और एक फाइल जहां यह नहीं है। परंपरागत रूप से, एक रन-टाइम परीक्षण अन्तरक्रियाशीलता को भेद करने के लिए किया जाएगा, उदाहरण के लिए, यह देखने के लिए जाँच करें कि क्या संकेत निर्धारित है।
जब बैश शुरू होता है, तो यह विभिन्न स्क्रिप्ट्स में कमांड को निष्पादित करता है।
जब बैश को एक इंटरेक्टिव लॉगिन शेल के रूप में आमंत्रित किया जाता है, तो यह पहले फाइल / 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 $ "
.profile
के बाद .bash_profile
? कोई तर्क?
इसमें आपके शेल के लिए विभिन्न "इनिशियलाइज़ेशन" कमांड्स होने चाहिए, जैसे:
alias ll='ls -l'
)।ll='ls -l'
आपको कमांड ll
निष्पादित करने के लिए ls -l
टाइप करता है।