Emacs में शेल के लिए .bash_profile या .bashrc?


11

मैंने एक विशाल कमांड के लिए एक उपनाम लिखा और इसे .bash_profileमेरे आश्चर्य में संग्रहीत किया , एमएसीएस ने मेरे द्वारा लिखे गए उपनाम को नहीं उठाया .bash_profile। इंटरनेट में कुछ सर्च करने के बाद, मैंने .bashrcअपने $ HOME में उपनाम कमांड के साथ एक फ़ाइल बनाई और उसके बाद ही emacs ने अन्य नाम उठाया। मैं उलझन में हूँ क्योंकि terminal.app से अन्य नाम लेता है .bash_profileलेकिन Emacs केवल में उर्फ लेता है .bashrc

मैं भाग रहा था M-x shellऔर मैं macOS पर हूँ। क्या कोई मुझे समझा सकता है कि emacs और .bashrc& के साथ क्या संबंध है .bash_profile

इस बिंदु पर, मैं अपने .bash_profileअलावा पढ़ने के लिए Emacs कैसे प्राप्त कर सकता हूं .bashrc?


1
आपको अपने .bashrcउपनामों को लेने के लिए Emacs कैसे मिला ? मैं यह इसलिए पूछ रहा हूं क्योंकि मेरे Emacs (और जाहिर तौर पर दूसरों के) यह डिफ़ॉल्ट रूप से नहीं करते हैं।
आर्क स्टैंटन

@ArchStanton @Vera Johanna इस सवाल का जवाब देखें। यह वही तरीका है जिसका मैंने इस्तेमाल किया। हालाँकि अब मैं zshबैश की जगह इस्तेमाल कर रहा हूँ :)
चक्रवर्ती रघुनंदन

जवाबों:


14

यह सही व्यवहार है। .bash_profileतथाकथित लॉगिन गोले के लिए है। जैसे कि जब आप अपने कंप्यूटर को टेक्स्ट मोड में, या टर्मिनल एमुलेटर में कंप्यूटर के माध्यम sshसे telnetया ...

.bashrcगैर-प्रवेश के गोले के लिए होता है, जैसे कि जब आप पहले से लॉग इन होते हैं और एक नया xterm शुरू करते हैं, या इस मामले में यह shellमोड खाली कर देता है।

आमतौर पर .bash_profileइसमें .bashrcभी पढ़ने की आज्ञा होती है:

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

इसलिए इसे .bashrcहर स्टार्टअप पर पढ़ा जाता है।


तो, उपनाम में हैं .bashrc; यह भी एक अलग बनाने के लिए प्रथागत है .bash_aliasesऔर एक .bashrcही निर्माण के माध्यम से इसे शामिल करें :

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

11

@Pingi द्वारा किए गए बिंदुओं के अलावा, आप एक अलग कॉन्फ़िगरेशन फ़ाइल का भी उपयोग कर सकते हैं जो केवल emacs शेल के लिए लोड की जाएगी M-x shell:

मैनुअल पेज (emacs) इंटरएक्टिव शेल से :

Emacs नए शेल को इनपुट के रूप में '~ / .emacs_SHELLNAME' फ़ाइल की सामग्री भेजता है, अगर यह मौजूद है, जहाँ शेल नाम उस फ़ाइल का नाम है जिसे शेल से लोड किया गया था। उदाहरण के लिए, यदि आप बैश का उपयोग करते हैं, तो भेजी गई फ़ाइल '~ / .emacs_bash' है। यदि यह फ़ाइल नहीं मिली है, तो Emacs '~ / .emacs.d / init_SHELLNAME.sh' के साथ प्रयास करता है।

यह उपयोगी है यदि आप Emacs के भीतर एक अलग शेल प्रॉम्प्ट प्रारूप का उपयोग करना चाहते हैं, या फ़ाइलों को खाली करने के कार्यों को परिभाषित करने के लिए परिभाषित करना चाहते हैं।

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