मैं बाहर निकला, बाहर .bashrc


27

मैंने अपनी .bashrc फ़ाइल में "बाहर निकलें" डाल दिया। मेरे पास मशीन का भौतिक उपयोग नहीं है इसलिए इसे कनेक्ट करने के लिए मैं ssh का उपयोग करता हूं। मेरे पास रूट विशेषाधिकार नहीं हैं। हर बार जब मैं सर्वर से जुड़ता हूं, तो कनेक्शन अपने आप बंद हो जाता है।

अब तक, मैंने कोशिश की है:

  • ओवर राइटिंग .bashrc with scp और sftp। इससे पहले कि मैं कुछ भी कर सकता हूं, कनेक्शन बंद हो जाता है।
  • Ssh (कनेक्शन बंद हो जाता है) तक पहुँचने के लिए कुछ अलग GUI कार्यक्रमों का उपयोग करना
  • फ़ाइल को ftp के साथ ओवरराइट करना। (ftp का उपयोग नहीं कर सकते)
  • मेरे घर के कंप्यूटर से
    • $ ssh होस्ट "बैश - नोप्रोफाइल - नोन्र्क" (कनेक्शन बंद हो जाता है)
    • $ ssh होस्ट "mv .bashrc bashrc_temp" (कनेक्शन बंद हो जाता है)
    • $ ssh होस्ट "rm .bashrc" (वही बात)
    • $ ssh होस्ट -t (कनेक्शन बंद हो जाता है)

वहाँ कुछ भी है जो मैं .bashrc को निष्क्रिय करने के लिए कर सकता हूँ या हो सकता है कि .bashrc से पहले फ़ाइल को अधिलेखित कर दिया जाए?

अद्यतन करें

@ ring0

मैंने आपके सुझाव की कोशिश की, लेकिन भाग्य नहीं। Bashrc फ़ाइल अभी भी पहले चलती है।

मैंने एक और चीज़ की कोशिश की, एक अन्य खाते और sudo के साथ .bashrc को संपादित करना, लेकिन इस खाते में sudo के विशेषाधिकार नहीं हैं।

मुझे लगता है कि मैं व्यवस्थापक से संपर्क करूंगा।

संपादित करें

@shellholic

मैं इस पर विश्वास नहीं कर सकता, लेकिन इस दृष्टिकोण ने काम किया! भले ही 'प्रस्थान' पहली कुछ पंक्तियों के भीतर होती है (केवल कुछ से बना है, तो ब्लॉक और निर्यात बयान) Bashrc फाइल में, मैं अभी भी करने के लिए Ctrl-सी यह बाधा सफलतापूर्वक बीस की कोशिश करता भीतर कामयाब (3 मिनट के बारे में ले लिया)। मैंने .bashrc में आक्रामक लाइन को हटा दिया और सब कुछ फिर से काम करने के क्रम में है।


2
darwinawards.com आपके पास एक उपयोगकर्ता के रूप में (अस्थायी) एक पहुंच होनी चाहिए जो आपकी .bashrc फ़ाइल को अधिलेखित कर सकती है, या आपके डिफ़ॉल्ट शेल को कुछ और में बदल सकती है। "अपने सिस्टम एडमिनिस्ट्रेटर से पूछें" जैसा कि एमएस कहता है।

2
man 8 sshdका कहना है कि यह 9. Runs user's shell or command.नौवें चरण के रूप में ...: - /

1
scp भी काम करना बंद कर देगा क्योंकि खोल अभी भी खुलता है और .bashrc कहा जाता है
Aleksandr Levchuk

FYI करें इन सुझावों में से अधिकांश कारण काम नहीं करते हैं क्योंकि ssh उपयोगकर्ता के शेल के तर्क के रूप में इसे पारित करके किसी भी कमांड को निष्पादित करता है। Session.c में निष्पादित करने के लिए खोजें। उपयोगकर्ता के शेल के इस आह्वान के तर्कों को संशोधित / जोड़ने / हटाने का कोई तरीका नहीं है।
मार्क वैगनर

जवाबों:


37

इससे बाहर निकलने से पहले आप (ctrl + C) गर्भपात करने की कोशिश कर सकते हैं .bashrc

मैंने एक परीक्षक के bashrc के शीर्ष पर निम्नलिखित जोड़कर कोशिश की, यह काम करता है, यह केवल समय की बात है। मेरे मामले में बहुत आसान है:

sleep 3
echo "Too late... bye"
exit 0

8
+1, क्योंकि यह संभवतः एकमात्र समाधान है जिसे सिस्टम व्यवस्थापक की सहायता की आवश्यकता नहीं है। हालाँकि, सही टाइमिंग के लिए बहुत सी किस्मत की आवश्यकता होती है (ssh -v होस्ट थोड़ी मदद कर सकता है)।
जूईमिंग

वास्तव में ctrl + C ने काम किया। नींद के बिना भी। मैंने अपने बैश आर्क में "बाहर" रखा और लगभग 4 कोशिशों के बाद एक त्वरित ctrl + C के साथ पुनर्प्राप्त करने में सक्षम था। कृपया कुछ उत्तर दें ताकि मैं "-1" को "+1" में बदल सकूं।
हांग्जो लेवचुक

@ अलेक्जेंडर लेवचुक ने किया
शेलोविच

4
मैं यहां बहुत कम हास्यास्पद तकनीक और क्रूर प्रभावशीलता के संयोजन की बहुत सराहना करता हूं।
यूनिक्स

1
मैं पागलों की तरह हंस रहा हूं, वह भीड़ जब अंत में काम करती है। धन्यवाद @JooMing, मैंने यहां से सभी तरीकों को आजमाया, serverfault.com/questions/94503/… यहां तक ​​कि Ctrl + C दबाने पर भी, लेकिन यह केवल -v विकल्प जोड़ने के बाद ही काम करता है!
mxmlnkn

12

मैं अपनी .bashrc फ़ाइल को एक नए क्लस्टर पर गड़बड़ाने में कामयाब रहा जिसे मुझे ट्रायल एक्सेस दिया गया है। एक noob की तरह प्रतीत नहीं करना चाहता था, आखिरी चीज जो मैं करना चाहता था, वह प्रवेशकों से मदद मांग रहा था, और मुझे काम करने के लिए एक अच्छी तरह से ^ + C नहीं मिल सका।
हालांकि काम क्या था, 'sm' कमांड भेजने के लिए अंतिम तर्क के रूप में था। अर्थात

ssh -tv user@host rm .bashrc

मुझे काम करने के लिए 'mv' कमांड नहीं मिल सका (बिना -t के पहले प्रयास किया गया), इसलिए मुझे लगता है कि -t विकल्प ने इसे कर दिया होगा, लेकिन आप चाहें तो परीक्षण कर सकते हैं। मैं अब .bashrc ~ फ़ाइल (vim द्वारा बनाई गई) से सब कुछ बरामद कर चुका हूँ, लेकिन सवाल में डोडी लाइन और दुनिया में सब कुछ सही है! = D


2
ssh -tv user@home mv .bashrc .bashrc-oldमेरे लिए काम किया
कोड कमांडर

3

यदि आप एक अलग उपयोगकर्ता के रूप में लॉग इन कर सकते हैं, तो यह कोशिश करें:

su user -s /bin/sh

आपको अपने पासवर्ड की आवश्यकता होगी।


1
आप अलग-अलग कोशिश कर सकते हैं, न कि शेल पर आधारित: kshयाcsh
ह्यूबर्ट करियो

3

अगर मुझे इस तरह के कुछ बुरे अनुभव याद हैं, तो ssh, scp, sftp को इनिशियलाइज़ेशन फ़ाइलों को चलाने के लिए लगता है।

मेरा सुझाव सरल एफ़टीपी का उपयोग करना है और फिर लॉग इन करने के बाद एफ़टीपी कमांड लाइन पर फ़ाइल खराब फ़ाइल को हटाना या नाम बदलना है। मैं मान रहा हूं कि आपका सिस्टम आपको एफ़टीपी एक्सेस की अनुमति देगा। ऐसे मामले में, जब आपने मरम्मत पूरी कर ली हो, तो अपना पासवर्ड (सुरक्षित रूप से) बदलना सुनिश्चित करें।


फाइलजिला ने इसके लिए पूरी तरह से काम किया। बस "सर्वर" मेनू को ड्रॉप-डाउन करना होगा और "फोर्स शो हिडन फाइल्स" सेटिंग को चुनना होगा।
डैनी जी

1

से man ssh( OpenSSH_5.6p1कम से कम, निश्चित नहीं है कि कब जोड़ा गया),

~/.ssh/rc
        Commands in this file are executed by ssh when the user logs in, just
        before the user's shell (or command) is started.  See the sshd(8) manual
        page for more information.

..जिसका अर्थ है कि आप ~/.ssh/rcनिम्नलिखित को बना सकते हैं :

mv ~/.bashrc ~/bak.bashrc

फिर जब आप ssh, समस्याग्रस्त bashrc को बाहर ले जाया जाएगा, तो आपका लॉगिन शेल शुरू होने से पहले - आप तब स्पष्ट रूप से इसे ठीक कर सकते हैं bak.bashrcऔर इसे वापस उसी स्थान पर ले जा सकते हैं


0

SCP या SFTP के माध्यम से कनेक्ट करें और उस तरह से अपनी .bashrc फ़ाइल को संपादित / नाम बदलें / हटाएं। संपादित करें - D'oh, मुझे लगता है कि आपने कहा कि आपने कोशिश की। ओह अच्छा।


0

मैं एक ही समस्या है, और किसी तरह इसे हल करने में सक्षम था। मैंने सिस्टम तक पहुंचने के लिए ssh का उपयोग किया, और जैसे ही मैंने सिस्टम में लॉग इन किया, Ctrl + c दबाया। तब, ~ / .bashrc नहीं पढ़ा गया था, और मैं इसे संशोधित करने में सक्षम था।


1
यहाँ सबसे उत्कट उत्तर का सटीक डुप्लिकेट
pauska

0

मुझे यह काम मिला।

ई दबाकर ग्रब बूट लोडर को बाधित करें ... फिर से ग्रब लोडिंग लाइनों को दर्ज करने के लिए ई दबाएं, फिर से कर्नेल लाइन को संपादित करने के लिए ई दबाएं,

पंक्ति के अंत में जाएं;

लाइन के अंत में init = / bin / bash जोड़ें,

बी, बूट करने के लिए दर्ज करें,

यह एक बैश शेल खोलेगा, vim /root/.bashrc खोलेगा और तदनुसार एडिट करेगा। बाहर निकलें और अब आप लॉगिन करने में सक्षम होंगे


0

यदि आप Homestead Vagrant का उपयोग कर रहे हैं ...

यहां बताया गया है कि मैंने खुद को इस अचार से कैसे निकाला।

(विंडोज 10 पर गिट बैश का प्रयोग)

cd ../Homestead/
mv ~/.ssh/known_hosts ~/.ssh/known_hosts_OLD
ssh vagrant@127.0.0.1 -p 2222 mv ./.bashrc ./.bashrc_OLD

नोट: डिफ़ॉल्ट पासवर्ड "आवारा" है

इन लेखों ने मेरी मदद की:


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