जवाबों:
.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
जो आपके उत्तर की सामग्री को कवर करता है। हतोत्साहित न हों, आप एक ईमानदार प्रयास को आगे बढ़ाते हैं, लेकिन उन सवालों के जवाब देने पर ध्यान देने की कोशिश करते हैं जिनमें कुछ सामग्री अन्य उत्तरों द्वारा कवर नहीं की जाती है।