नए उपनाम और कार्यों को परिभाषित करने के बाद उपनाम और कार्यों को ताज़ा करें?


55

जब मैं .bash_aliasesफ़ाइल में एक नया उपनाम या फ़ाइल में एक नए फ़ंक्शन को परिभाषित करता हूं .bashrc, तो क्या टर्मिनल को बंद किए बिना तुरंत नए उपनाम या फ़ंक्शन का उपयोग करने में सक्षम होने के लिए कुछ ताज़ा आदेश है (मेरे मामले में xfce4- टर्मिनल कुछ टैब के साथ खुला है, कई फाइलें खुली हैं (काम के बीच में)?


6
ध्यान दें कि कोई भी कमांड नहीं है जो उस नए कमांड को आपके सभी खुले टर्मिनलों / टैब में जाना जाएगा। आपको अपने द्वारा खोले गए प्रत्येक शेल में . .bashrcया करना होगा source .bashrc
पॉल टॉम्बलिन

जवाबों:


66

बदली हुई फ़ाइल को सोर्स करने से वर्तमान टर्मिनल में नए लिखित उपनाम या फ़ंक्शन तक पहुँच मिलेगी, उदाहरण के लिए:

source ~/.bashrc

एक वैकल्पिक वाक्यविन्यास:

. ~/.bashrc

ध्यान दें कि यदि आपके टर्मिनल में कई बैश चल रहे हैं (आपने कई टैब का उल्लेख किया है), तो आपको इसे हर उदाहरण में चलाना होगा।


3
sourcecsh-व्युत्पन्न है। बोर्न शेल तरीका है . .bashrc
पॉल टॉम्बलिन

यह दिलचस्प है कि जब मैं परिभाषित करता हूं तो यह काम नहीं करता है alias prg='prg.py'। मुझे टर्मिनल बंद करना होगा।
xralf

"आपको इसे हर हाल में चलाना होगा।" - ध्यान दें कि zsh उपयोगकर्ता TM और TRAPALRM को उचित रूप से स्टेट करने के लिए सेट कर सकते हैं और (यदि आवश्यक हो) re-source ~ / .shshrc एक बार प्रति सेकंड या किसी अन्य उचित अंतराल पर। मुझे विश्वास नहीं होता कि बैश ऐसा कर सकता है, हालाँकि।
केविन

6

. ~/.bashrcकमांड लाइन पर टाइपिंग चलेगी .bashrcऔर इसलिए उस फ़ाइल में परिभाषित कोई भी फ़ंक्शन बनाया जाएगा।

.bashrcस्वयं भी तब कॉल करेगा और चलाएगा .bash_aliases( यदि यह मौजूद है) यदि .bashrcइसमें यह कोड है:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

का उपयोग करते हुए, जबकि . ~/.bash_aliases(उदाहरण के लिए आदेश पंक्ति पर) अकेले बस कोशिश करते हैं और चलेंगे .bash_aliases.bashrc से जुड़े बिना और (इसलिए फ़ाइल की जांच परीक्षण जब में एक त्रुटि दे देंगे अगर फ़ाइल मौजूद नहीं है .bashrc)।


2

कभी-कभी आप एक उपनाम को किसी फ़ंक्शन में बदलना चाहते हैं, लेकिन जब आप bashrc फ़ाइल को स्रोत करते हैं, तो एक अजीब त्रुटि हो सकती है:

. ~/.bashrc
bash: /home/username/.bashrc: line 38: syntax error near unexpected token `('
bash: /home/username/.bashrc: line 38: `hello_world() {'

यह इसलिए हो रहा है क्योंकि अन्य नाम नए परिभाषित फ़ंक्शन के नाम के साथ टकरा रहा है। जहां तक ​​मुझे पता है, इससे बचने के लिए हर चीज को एक करने की जरूरत है, तो bashrc फाइल को सोर्स करें।

bash-4.3 $
unalias -a && . $HOME/.bashrc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.