.bashrc ssh लॉगइन पर


374

जब मैं हार्डी 8.04 पर चलने वाले अपने ubuntu बॉक्स में ssh करता हूं, तो मेरे अंदर का वातावरण चर .bashrcसेट नहीं होता है।

यदि मैं एक स्रोत करता हूं .bashrc, तो चर ठीक से सेट होते हैं, और सब कुछ ठीक है।

.bashrcलॉगिन पर कैसे नहीं चलाया जाता है?


92
पृथ्वी पर यह "ऑफ टॉपिक" कैसे है?
जोनाह

8
मैं इस तरह सख्त नहीं हूं, लेकिन मेरा अनुमान है कि यह serverfault.com, superuser.com, या askubuntu.com
माइकल बटलर

16
@ मिचेलबटलर सहमत। आश्चर्य है कि वे इसे बंद करने के बजाय इसे बंद क्यों नहीं करते ...
ल्यूक

4
@ ल्यूक - प्रश्न केवल बनाए जाने के 60 दिनों के भीतर स्थानांतरित किए जा सकते हैं। इस प्रश्न को बंद किए जाने के साढ़े 3 साल बाद तक विषय के रूप में बंद नहीं किया गया था। मेरा मानना ​​है कि 60 दिनों के नियम का तब कुछ लेना-देना है जब प्रश्न डेटाबेस का बैकअप होता है या कुछ और ... बैकअप होने के बाद माइग्रेट करना अधिक कठिन हो जाता है।
आर्टऑफवर्फ

मैंने सोचा था कि यह एक बहुत उपयोगी सवाल था। इस समस्या का सामना तब किया जब मुझे मशीन A में ssh करना था, मशीन B में Ssh करने के लिए (केवल A के स्थानीय नेटवर्क के माध्यम से सुलभ)। के बीच एक व्यावहारिक अंतर मुझे सिखाया .bashrcऔर .bash_profile!
information_interchange

जवाबों:


620

.bashrcजब आप SSH का उपयोग करते समय लॉग इन नहीं करते हैं। आपको इसे .bash_profileइस तरह से स्रोत करने की आवश्यकता है :

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

32
इसे बैश के साथ किसी भी सैंट्रो डिस्ट्रो पर काम करना चाहिए, इस प्रकार ये सभी टिप्पणियाँ अप्रचलित हैं :)

1
यह उबंटू 12.04 LTS सर्वर के साथ आवश्यक नहीं है, क्योंकि .bashrcजब आप SSH में डिफ़ॉल्ट रूप से आते हैं, तो यह खट्टा होता है।
orokusaki

4
@orokusaki: सुधार, यह है :) एक बदमाश .bash_profile फ़ाइल थी जो .profile को छोड़ देने के लिए मजबूर कर रही थी।
लेस्टर पीबॉडी

4
@LesterPeabody की तरह, मेरे .bashrc को एक दुष्ट .bash_profile के कारण उबंटू 12.04 LTS सर्वर पर सेल्यूट नहीं किया जा रहा था। इसे RVM इंस्टॉल द्वारा बनाया गया था। मैंने RVM कमांड को .profile और .bash_profile पर स्थानांतरित कर दिया है। सभी अब ठीक चल रहे हैं।
रॉड Daunoravicius

4
fwiw डेबियन जेसी / 8 पहले से ही .bashrcआउट-ऑफ-द-बॉक्स के स्रोत हैं - लेकिन यह ऐसा .profileनहीं करता है .bash_profile
अंडरस्कोर_ड

75

हॉबहाउस जैसी स्थिति मेरी भी थी। मैं कमांड का उपयोग करना चाहता था

 ssh myhost.com 'some_command'

और 'some_command' '/ var / some_location' में मौजूद है, इसलिए मैंने PATH वातावरण में '$ HOME / .bashrc' का संपादन करके '/ var / some_location' को जोड़ने की कोशिश की।

लेकिन वह काम नहीं कर रहा था। क्योंकि डिफ़ॉल्ट .bashrc (उबंटू 10.4 एलटीएस) नीचे जैसे कोड द्वारा सोर्सिंग से रोकता है

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

इसलिए यदि आप ssh नॉन-लॉगिन शेल के लिए वातावरण बदलना चाहते हैं। आपको उस लाइन के ऊपर कोड जोड़ना चाहिए।


7
धन्यवाद दोस्त! यह थोड़ा सा था जो मेरे लिए काम नहीं करता था :)
रेमंड बारलो

कूल टिप ओस। मैंने इस जाल में भाग लिया है जब जेनकींस से स्क्रिप्ट चल रहा है। मैंने ssh के माध्यम से लॉग इन किया है और यह काम किया है। जेनकिंस ने गैर-संवादात्मक रूप से लॉग इन किया और यह विफल रहा।
Krzysztof Jabłoński

1
क्यों आम समाधान के लिए गैर-इंटरैक्टिव गोले के लिए एक नया रास्ता भी निर्धारित नहीं करना है। ऊपर काफी कुछ होना चाहिए कि अगर बयान, सिर्फ इस कारण के लिए। लगता है कि केवल उपनामों और संवादात्मक साधनों के आरंभ को उस रेखा से नीचे जाना चाहिए ...
बेनपेन

2
उबंटू के अन्य संस्करण पर इंटरेक्टिव चेक दिखता है:bash # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
सिल्वेन

धन्यवाद, इसने मेरे लिए इसे हल कर दिया। काश मैंने इसे लगभग एक घंटे पहले देखा होता!
जस्टिन लॉरेंस

31

बैश इनवेशन कैसे काम करता है, इस पर एक उत्कृष्ट संसाधन के लिए, डॉटफ़ाइल्स क्या करते हैं, और आपको उनका उपयोग कैसे करना चाहिए / कॉन्फ़िगर करना चाहिए, यह पढ़ें:


प्रमुख मार्ग: "यह पढ़ने के लिए / etc / प्रोफ़ाइल और उसके बाद .bash_profile या .bashlologin या .profile में से एक का कारण बनता है।"
एंडी हेडन

29

यदि अयमान के समाधान काम नहीं करता है, अपनी फ़ाइल नामकरण की कोशिश .profileकरने के बजाय .bash_profile। मेरे लिए यही काम किया।


2
बहुत बढ़िया। मैंने इस विवरण पर 15 मिनट खो दिए।
vmassuchetto

इसने उबंटू को 12.10 पर
थिंक किया

1
मुझे लगता है कि GUI लॉगिन पर .profile लोड। टर्मिनल लॉगिन के लिए .bash_profile
रेज़ेक लुअर

इसने SSH लॉगिन के लिए एक डेबियन जेसी डॉकटर कंटेनर (लगातार स्टोरेज के लिए केवल डेटा कंटेनर का उपयोग करके) के लिए काम किया - लेकिन क्या आप अपने लॉगिन शेल की जांच करने के लिए / etc / passwd भी करना चाहते हैं / बिन / bash और नहीं या "sh" -------> / बिन / पानी का छींटा
स्टुअर्ट कार्डल

1
@RazecLuar .profileको किसी भी लॉगिन शेल द्वारा निष्पादित किया जाना है , भले ही यह कहा गया हो कि किसी GUI को स्पॉन करने का इरादा है। आपकी टिप्पणी पूरी तरह से सवाल और इस जवाब का खंडन करती है, जो स्पष्ट रूप से इंगित करती .profileहै कि SSHing - एक अलग गैर-जीयूआई विधि पर लागू किया गया है।
अंडरस्कोर_ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.