ssh के माध्यम से कमांड चलाते समय डॉट फाइल खट्टी नहीं होती है


11

जब मैं अपने कार्यक्रम को अंतःक्रियात्मक रूप से चलाता हूं, तो यह ठीक काम करता है:

ssh somehost
$ ~/some/path/somescript.py

जब मैं अपने प्रोग्राम को सीधे ssh पर चलाता हूं, तो यह काम नहीं करता है। चर PYTHONPATHसेट नहीं है, क्योंकि .bashrcखट्टा नहीं है।

ssh somehost ~/some/path/somescript.py

अगर मैं दौड़ता हूं ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py', तो यह ठीक काम करता है।

लेकिन बाद वाले कुछ अन्य लोगों के लिए काम नहीं करेंगे, जैसे tcsh का उपयोग करना और बिल्कुल नहीं होना ~/.bashrc)।

किसी अन्य होस्ट पर ssh के माध्यम से एक चीज़ चलाने की आज्ञा क्या है जो सभी गोले के लिए काम करती है?


1
यहाँ उत्तर दिया गया है, stackoverflow.com/questions/820517/bashrc-at-ssh-login , मूल रूप से, ssh स्रोत .bashrc नहीं करता है, आपको अपने .bashrc के माध्यम से .bash_profile या अन्य विकल्पों की आवश्यकता होती है।
आठबेटटोनी

1
@EightBitTony: नहीं, यह एक अलग मुद्दा है। bzdjamb का प्रश्न एक गैर-संवादात्मक सत्र के बारे में है।
गिलेस एसओ- बुराई को रोकना '

वास्तव में मेरे द्वारा पोस्ट किए गए लिंक में अंतिम उत्तर मूल्यवान प्रतीत होता है, ssh स्रोत .bashrc करता है, लेकिन यह इंटरैक्टिव होने के कारण चेक के कारण निष्पादित नहीं करता है। मैं फिर भी सराहना करता हूं, कि आपका जवाब सभी ठिकानों को कवर करता है।
आठबेटटोनी

3
@EBBTTony: उस प्रश्न पर, स्वीकृत उत्तर पूछने वाले के लिए एक अच्छा समाधान है, लेकिन उत्तर पूरी कहानी नहीं बताते हैं। SSH स्वयं कुछ भी स्रोत नहीं करता है। यदि आपके लॉगिन शेल को बैश किया जाता है bash, तो यह स्रोत .bash_profileया .profileएक इंटरैक्टिव लॉगिन के लिए, और .bashrcएक गैर-इंटरैक्टिव लॉगिन के लिए है। यदि आपका लॉगिन शेल बैश shया ऐश या ksh के रूप में है, तो यह .profileएक इंटरैक्टिव लॉगिन के लिए स्रोत है और एक गैर-इंटरैक्टिव लॉगिन के लिए कुछ भी नहीं है।
गिल्स एसओ- बुराई को रोकें '

जवाबों:


12

कोई मानक प्रति-उपयोगकर्ता फ़ाइल नहीं है जो गैर-संवादात्मक लॉगिन के लिए चलाई जाती है। आपको या तो कार्यक्रम को आत्मनिर्भर बनाने की आवश्यकता है, ताकि यह बिना डिफ़ॉल्ट पर्यावरण चर पर निर्भर किए बिना अपनी निर्भरता खोजने में सक्षम हो, या आमतौर पर पर्यावरण को स्पष्ट रूप से सेट करें

ssh somehost '. ~/.profile; exec ~/some/path/somescript.py'

आपको वातावरण चर सेट नहीं करना चाहिए .bashrc: यह फ़ाइल इंटरेक्टिव शेल के लिए है, और बैश के प्रत्येक उदाहरण में पढ़ा जाता है। पर्यावरण चर में सेट किया जाना चाहिए .profile, जिसे आप लॉग इन करते समय पढ़ा जाता है। इसके अलावा बहुत कम संख्या में लोग जो बॉर्न-शैली के खोल को अपने लॉगिन शेल के रूप में उपयोग नहीं .profileकरते हैं, सभी के लिए काम करता है, चाहे वे बैश या ज़ीश का उपयोग करें या इंटरैक्टिव रूप से csh या मछली। .Bashrc और .bash_profile के बीच अंतर भी देखें , बैश के साथ पर्यावरण चर स्थापित करने के लिए कौन सी सेटअप फ़ाइलों का उपयोग किया जाना चाहिए?

कहा जा रहा है, एक स्क्रिप्ट को हर बार जब आप एक विशेष कुंजी के साथ ssh में लॉग इन करते हैं, तो इसका एक तरीका है। देखें कि होस्ट को SSHing करते समय शेल कॉन्फ़िगरेशन जानकारी को पुश करने का कोई तरीका है? , शश पर स्टार्टअप फ़ाइलें


अब मैं इसे "उत्तर" कैसे चिह्नित करूं? :-)
बज़जम्बो

इस उत्तर भाग के बाईं ओर ऊपर और नीचे वोट तीर और एक वोट काउंटर होना चाहिए। नीचे बस एक चेकबॉक्स की रूपरेखा होनी चाहिए। आप उत्तर स्वीकार फ़ंक्शन को सक्रिय करने के लिए उस पर क्लिक कर सकते हैं।
कालेब

आप सभी को फिर से धन्यवाद, लेकिन जाहिर तौर पर आपके जवाबों ने मेरी समस्या का समाधान नहीं किया।
bzdjamb

यहाँ समस्या का थोड़ा नया सूत्रीकरण है और इसके मूल में मेरी वर्तमान समझ है।
बज्जाम्बो

ऐसा लगता है कि मैं 60 या अधिक वर्णों को यहाँ जोड़ नहीं सकता इसलिए मुझे अपना प्रश्न अलग से फिर से पूछने के लिए मिला है। सॉरी एब। उस। फिर, यह एक हल नहीं है, और कुछ दिनों के लिए और अधिक खुदाई से मदद नहीं मिली।
१46:४६ पर bddjamb

0

मुझे भी यही समस्या थी, लेकिन मेरे लिए इसका समाधान अलग था। मेरे उपयोगकर्ता को बैश को शेल के रूप में उपयोग करने के लिए कॉन्फ़िगर नहीं किया गया था, इसने zsh को शेल के रूप में उपयोग किया, इसलिए बैश डॉट फाइलें लॉगिन पर नहीं चलाई गईं। एक टेक्स्ट एडिटर के साथ खोलें / etc / passwd करें और अपने उपयोगकर्ता नाम की तलाश करें और वह किस शेल का उपयोग करता है:

root:x:0:0:root:/root:/bin/zsh

यह मेरी उपयोगकर्ता प्रविष्टि दिखती है। ध्यान दें कि यह बिन / बाश के बजाय / बिन / zsh कहता है। Zsh के लिए, सही डॉट फ़ाइल ~ / .zprofile है। हर बार जब आप ssh का उपयोग करके लॉगिन करते हैं तो इसकी सामग्री चलाई जाएगी।

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