जवाबों:
.bashrcएक शेल स्क्रिप्ट है जो बैश तब भी चलती है जब इसे अंतःक्रियात्मक रूप से शुरू किया जाता है। यह एक इंटरैक्टिव शेल सत्र को इनिशियलाइज़ करता है। आप उस फ़ाइल में कोई भी कमांड डाल सकते हैं जिसे आप कमांड प्रॉम्प्ट पर टाइप कर सकते हैं।
आप अपने विशेष वातावरण में उपयोग के लिए, या अपनी प्राथमिकताओं में चीजों को अनुकूलित करने के लिए शेल सेट करने के लिए यहां कमांड डालते हैं। एक आम बात यह है कि आप हमेशा उपलब्ध रहना चाहते हैं कि उपनाम में डाल रहे .bashrcहैं ।
.bashrcहर इंटरेक्टिव शेल लॉन्च पर चलता है । अगर आप कहते हैं:
$ bash ; bash ; bash
और फिर Ctrl-Dतीन बार मारा, तीन बार .bashrcचलेगा। लेकिन अगर आप इसके बजाय कहते हैं:
$ bash -c exit ; bash -c exit ; bash -c exit
तब .bashrcबिल्कुल नहीं चलेगा, क्योंकि -cबैश कॉल गैर-संवादात्मक है। जब आप किसी फ़ाइल से शेल स्क्रिप्ट चलाते हैं तो वही सच होता है।
कंट्रास्ट .bash_profileऔर .profileजो केवल एक नए लॉगिन शेल की शुरुआत में चलाए जाते हैं। ( bash -l) आप यह चुनते हैं कि क्या कोई कमांड .bashrcबनाम .bash_profileइस पर निर्भर करता है कि आप इसे एक बार चलाना चाहते हैं या हर इंटरेक्टिव शेल शुरू करना चाहते हैं।
उपनामों के एक प्रतिउत्तर के रूप में, जिसे मैं अंदर रखना पसंद करता हूं .bashrc, आप इसके बजाय PATHसमायोजन करना चाहते हैं .bash_profile, क्योंकि ये परिवर्तन आमतौर पर उदासीन नहीं होते हैं :
export PATH="$PATH:/some/addition"
यदि आप .bashrcइसके बजाय, हर बार जब आपने एक इंटरेक्टिव सब-शेल लॉन्च किया है, :/some/additionतो PATHफिर से अंत में टैकल हो जाएगा, जब आप एक कमांड को गलत करते हैं तो शेल के लिए अतिरिक्त काम करते हैं।
जब भी आप आप एक नया इंटरैक्टिव बैश खोल पाने से बाहर शेलvi के साथ :shउदाहरण के लिए,।
.bashrc। इससे कभी-कभी अप्रत्याशित व्यवहार हो सकता है । सामान्य वर्कअराउंड स्रोत .bashrcसे .profileया .bash_profileइसके बजाय है।
.bashrcअन्य गोले द्वारा उपयोग करने का इरादा नहीं है, इसलिए इसे स्रोत से .profile(जो अन्य गैर- bashगोले द्वारा उपयोग किया जा सकता है ) नहीं करना बेहतर है ।
source ~/.bashrcया . ~/.bashrcया [[ -f ~/.bashrc ]] && source. ~/.bashrcया [ -f ~/.bashrc ] && source ~/.bashrcकाम नहीं करते?
.bashrcवास्तव में खट्टा है ( superuser.com/a/183980/128768 से अनुशंसित आदेश का उपयोग करके )। समस्या मैं का सामना करना वास्तव में नहीं की सोर्सिंग है https://github.com/junegunn/fzfइस आदेश के अंदर के माध्यम से .bashrc: source ~/.fzf.bash। मैं एक नया टर्मिनल लॉन्च करता हूं, फिर Ctrl+ Rऔर मुझे मिलता है `__fzf_history__`bash: fzf: command not found। मैं मैन्युअल रूप से स्रोत करता हूं .bashrcऔर वही कुंजी शॉर्टकट अपेक्षित रूप से fzf लॉन्च करता है। यहाँ शोर के लिए क्षमा याचना।
एक .bashrcफ़ाइल का उद्देश्य एक ऐसी जगह प्रदान करना है जहां आप चर, फ़ंक्शन और उपनाम सेट कर सकते हैं, अपने (PS1) प्रॉम्प्ट को परिभाषित कर सकते हैं और अन्य सेटिंग्स को परिभाषित कर सकते हैं जो आप हर शुरुआत का उपयोग करना चाहते हैं जो आप एक नई टर्मिनल विंडो खोलते हैं।
हर बार जब आप एक नया टर्मिनल, खिड़की या फलक खोलते हैं तो यह काम करता है।
आप यहां मेरा (सिंटैक्स हाइलाइटिंग वाला चित्र) देख सकते हैं :
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"
स्पष्टीकरण:
-1। डुप्लिकेट को अनदेखा करने और डिफ़ॉल्ट से बहुत बड़ा होने के लिए मेरी इतिहास फ़ाइल सेट करें।
-2। lsआप linux या OSX
-3 का उपयोग कर रहे हैं , इस पर निर्भर करता है के लिए रंग विकल्प । mdएक कमांड
-4 के साथ एक निर्देशिका में बनाने और सीडी करने के लिए " " । यदि एक git रेपो और ...
-5 में वर्तमान git शाखा का पता लगाएं । -9। 
-10 के रूप में, एक भयानक PS1 संकेत परिभाषित करें । बेहतर PS2 प्रॉम्प्ट
-11। Vi को कमांड लाइन
-12 पर संपादक के रूप में सेट करें । Vi को डिफ़ॉल्ट संपादक के रूप में सेट करें
-13। .bash_aliasesअगर यह मौजूद है, तो मेरी फ़ाइल निष्पादित करें
-14। यदि मौजूद है तो मेरी git टैब पूर्ण स्क्रिप्ट (रीमोट और शाखाओं के लिए) निष्पादित करें।
-15। यदि यह मौजूद है, तो Autojump निष्पादित करें
-16। यदि bash संस्करण = = 4 है तो cd भाग टाइप किए बिना cd'ing की अनुमति दें
-17। यदि यह मौजूद है तो एक बैश पूर्ण स्क्रिप्ट निष्पादित करें
-18। यदि यह वर्तमान
-19 है तो TMUX का उपयोग करें । मेरे पेट
-20 में rvm जोड़ें । यदि यह मौजूद है तो rvm का उपयोग करें।
मैंने इसे पोर्टेबल बनाया है ताकि यह बिना अनुकूलन के मेरे किसी भी लिनक्स या OSX मशीनों पर काम करे - इसलिए कुछ कार्यों और अन्य लिपियों का उपयोग करने से पहले उपस्थिति के लिए कई परीक्षण किए जाते हैं।
इससे नई मशीन पर तुरंत पूरी फाइल का उपयोग करना भी आसान हो जाता है, जिसमें नई टर्मिनल विंडो खोलने पर कोई प्रभाव नहीं पड़ता है।
यह एक bashविन्यास फाइल है।
इंटरएक्टिव (गैर-लॉगिन) गोले, फिर इन फ़ाइलों से कॉन्फ़िगरेशन पढ़ा जाता है:
$HOME/.bashrcलॉगिन शेल के लिए, इन फ़ाइलों से कॉन्फिग रीड की जाती है:
/etc/profile (हमेशा खट्टा)$HOME/.bash_profile (इन फ़ाइलों के बाकी क्रम में जाँच की जाती है जब तक कि कोई नहीं मिलता है, तब तक कोई अन्य पढ़ा नहीं जाता है)$HOME/.bash_login$HOME/.profileकैसे / कब उन्हें लोड किया जाता है इसका सरल चित्रण नीचे दी गई छवि में है।
मैंने echoअपने .bashrcऔर एक को जोड़ा.bash_profile
देखने के man bashबारे में अधिक जानकारी के लिए
.bashrcऔर इसके बीच अंतर को अलग करता है .bashrcऔर .bash_profileजो आपके उत्तर की सामग्री को कवर करता है। हतोत्साहित न हों, आप एक ईमानदार प्रयास को आगे बढ़ाते हैं, लेकिन उन सवालों के जवाब देने पर ध्यान देने की कोशिश करते हैं जिनमें कुछ सामग्री अन्य उत्तरों द्वारा कवर नहीं की जाती है।