bashrc या bash_profile?


49

मुझे दो बैश लॉगिन स्क्रिप्ट के बीच का अंतर पता है:

.bashrc केवल "गैर-लॉगिन" गोले द्वारा चलाया जाता है।

.bash_profile(या .bash_loginया .profile) द्वारा "लॉगिन" गोले मार डाला जाता है।

क्या किसी के पास इस बात के कुछ अच्छे उदाहरण हैं कि लॉगिन-एग्जीक्यूटिव के लिए कौन सी चीजें बेहतर हैं, जैसे कि मैं केवल उन्हें ही डालूंगा .bash_profile, लेकिन वे वास्तव में समझ में नहीं आएंगे .bashrc?

(मुझे पता है कि हम में से अधिकांश स्रोत से .bashrcबाहर हैं .bash_profile, इसलिए विपरीत प्रश्न में बहुत कुछ प्रतीत नहीं होता है ...)


जवाबों:


24

चूँकि .bashrcयह गैर-लॉगिन गोले के लिए है, मैं स्क्रीन पर प्रतिध्वनित होने वाली किसी भी कमांड से बचता हूँ। मैंने उन अनुभवों में भी भाग लिया है जहाँ प्रतिध्वनि वाले कथन .bashrcsftp और rsync आदेशों को विफल करने का कारण बनेंगे (और शायद scp कमांडों को भी)।

# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime

इसके अलावा, आप आम तौर पर एक गैर-इंटरैक्टिव शेल से ssh- एजेंट नहीं चलाएंगे। तो मैं इस में है .bash_profile

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi

2
यदि आप ~ / .bash_profile चीजों के बजाय ~ / .profile का उपयोग करते हैं, तो भी यदि आप शेल को बदलते हैं तो भी काम करेगा .. ~ / .bash_profile bash विशिष्ट चीजों के लिए है।
लासपुलसेन

1
लेकिन बैश केवल EITHER .bash_profile OR .profile चलाएगा, इसलिए यदि आप दोनों का उपयोग करने जा रहे हैं, तो आपको .bash_profile या कुछ और के भीतर से .profile स्रोत करने की आवश्यकता है। यह वास्तव में एक बुरा विचार नहीं है ...
डॉन फॉल्कनर

@ स्रोत और @Don: अच्छे अंक। मैं अपने .bash_profile में बैशिज्म रखता था, लेकिन अब मैंने कुछ और सार्वभौमिक पर स्विच किया है। शायद .profile का उपयोग करना क्रम में है।
स्टीफन लासवर्स्की

मानक-धाराओं के माध्यम से कार्यान्वित दूरस्थ फ़ाइल स्थानांतरण विधियों के साथ हस्तक्षेप करने में आउटपुट-उत्पादक आदेशों के.bashrc बारे में , समाधान ऐसे आदेशों को कोड के तहत रखा जाता है जो यह जाँचता है कि क्या शेल संवादात्मक है और केवल यदि यह जारी है। .bashrcउबंटू में उपयोगकर्ताओं की डिफ़ॉल्ट फाइलें, /etc/skel/.bashrcखाता निर्माण से कॉपी की गई , साथ ही सिस्टमवाइड /etc/bash.bashrc, पहले से ही कोड है जो चेक और रिटर्न करता है यदि शेल गैर-सक्रिय है (हालांकि किसी को अभी भी उनके तहत एक आउटपुट-प्रोडक्शन कमांड डालनी चाहिए)।
एलिया कगन

8

बायोबू एक बेहतरीन उदाहरण है जिसे आपको कभी भी नहीं रखना चाहिए .bashrc

अन्यथा, यह अपने आप को अपने 'वर्चुअल टर्मिनलों' में से हर एक में पुनरावृत्ति करेगा; ;-)

आप इसे आज़मा सकते हैं, हालांकि यह मज़ेदार है।

यही कारण है कि आप इसे डालते हैं .profile, इसलिए बायोबू (जो वास्तव में स्क्रीन के चारों ओर एक उचित आवरण है) केवल एक बार लोड किया जाता है, एक बार लॉगिन-टाइम पर। और बायोबु ही नए इंटरएक्टिव बैश सत्र शुरू कर सकता है।


यह एक अच्छा उदाहरण है। पॉइंटर के लिए बायोबू को भी धन्यवाद। अब इसे आज़माने के लिए।
डॉन फॉल्कनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.