कैसे लॉग इन करने के बिना .bashrc संपादित करने के लिए


17

यह शायद एक डुप्लिकेट प्रश्न है, लेकिन मैं खोज करने के लिए क्या पता करने के लिए CentOS (विशेष रूप से एक वीएम पर) के लॉगिन / बूट प्रक्रिया के साथ पर्याप्त रूप से परिचित नहीं हूं।

मैं VirtualBox में CentOS 7 चला रहा हूं। मैंने गलती gnome-terminalसे अपनी ~/.bashrcफ़ाइल के अंत में संलग्न किया । तो अब जब मैं लॉग इन करता हूं तो एक टर्मिनल विंडो पॉप अप होती है। उस टर्मिनल सेशन का निष्पादन होता है .bashrc, जो एक और विंडो आदि को खोलता है, और मैं gnome-terminalटर्मिनल विंडो के एक टन से भर जाता हूं ।

मैं GUI लॉगिन के बिना टर्मिनल सत्र में प्रवेश करने की कोशिश कर रहा हूं (इसलिए gnome-terminalविफल रहता है), लेकिन मैं इसे GUI के बिना बूट करने के लिए नहीं कर सकता। मैंने बिना किसी सफलता के, इस प्रश्न के उत्तर का उपयोग करने की कोशिश की है। मुझे हर बार GUI लॉगिन मिलता है: CLI में बूट सेंटोस कैसे करें? । क्या बूट पर ग्रब कॉन्फ़िगरेशन को संपादित करने का एक और तरीका है, या उबंटू में Ctrl + Alt + F1 जैसे GUI लॉगिन से एक नया टर्मिनल इंस्टेंस प्राप्त करने का तरीका है? (हाँ, मैंने इसे आज़माया। यह या तो CentOS 7 में काम नहीं करता है, या यह वर्चुअलबॉक्स वीएम में काम नहीं करता है।) या कोई और तरीका है जिससे मैं बिना जीयूआई के टर्मिनल सत्र प्राप्त कर सकता हूं, इसलिए मैं अपना संपादन कर सकता हूं .bashrcऔर इस झंझट को ठीक करोगे?


4
है sshdकि वी एम पर? कई तरीकों से। 1) एकल उपयोगकर्ता मोड के रूप में शुरू करें (जैसे बूट समय में प्रवेश करें, कर्नेल का चयन करें, एक दबाएं, एकल जोड़ें , दर्ज करें ...) 2) यदि आपके वीएम सिस्टम रन sshd में आप अपने .bashrcसंशोधन को कॉपी करने की कोशिश कर सकते हैं और इसे वापस कॉपी कर सकते हैं ( scp, sftp rsync ...)। 3) आप किसी अन्य उपयोगकर्ता के रूप में लॉग इन कर सकते हैं और कर सकते हैं su -... 4) दूसरी मशीन (यहां तक ​​कि आभासी) से आप ssh user@host mv .bashrc bashrcToModifyतब लॉग कर सकते हैं , संशोधित कर सकते हैं ... 0) सभी CTRL ALT F1से पहले वीएम से काम करता है ?
हस्त्तूर

2
जब आप कहते हैं कि "गलती से सूक्ति-टर्मिनल जोड़ा गया", तो यह कैसे हुआ?
mcfedr

@mcfedr मैं XD पूछने के लिए किसी का इंतजार कर रहा था। मैंने गलत समझा कि क्या .bashrcथा। मैंने सोचा था कि इसे एक बार लॉगिन पर चलाया गया था, लेकिन हर बार किसी भी शेल सत्र के शुरू होने पर इसे चलाया जाता है। मैं, हर बार जब मैं में हस्ताक्षर किए गए पॉप अप करने के एक टर्मिनल विंडो चाहता था इसलिए मैंने किया था echo 'gnome-terminal' >> ~/.bashrc। बुरा विचार। मुझे लगता है कि मुझे कहीं gnome-terminalऔर लगाना चाहिए /etc/init.d? मैं अभी भी बूट प्रक्रिया को समझने की कोशिश कर रहा हूं।
माइकल हॉफमैन

जवाबों:


13

CtrlAltF1होस्ट द्वारा कब्जा कर लिया जा सकता है, या वर्चुअलबॉक्स इसे सही तरीके से पारित नहीं कर सकता है। त्वरित परीक्षणों के एक जोड़े ने मुझे बताया कि आप इसके बजाय वर्चुअलबॉक्स में परिभाषित होस्ट कुंजी का उपयोग कर सकते हैं CtrlAlt( मैकडॉन पर Ctrlबाईं या बाईं ओर हो सकता है)। इसलिए, F1मेरे लिए वर्चुअलबॉक्स में TTY1 पर स्विच किया गया (और इसी तरह F7GUI के लिए वापस)।


1
हाँ। वह काम किया। Ctrl + F2 ने मेरे लिए चाल चली। ऐसा लगता है कि Ctrl + F1 CentOS में GUI सत्र है, लेकिन यह एक ही सिद्धांत है। IMO यह सबसे सरल उपाय है- अतिरिक्त मीडिया या संपादन बूट कॉन्फ़िगरेशन की कोई आवश्यकता नहीं है। मैं इसे उत्तर के रूप में चिह्नित कर रहा हूं।
माइकल हॉफमन

2
@MichaelHoffmann हां, मेरे पास एक नए CentOS का प्रभाव होगा। पहले उपलब्ध TTY का उपयोग करने के लिए 6 और 7 के बीच GDM व्यवहार में परिवर्तन किया गया था TTY 7. के बजाय
muru

2
यह भविष्य के रिलीज़ में आगे बदल रहा है: लॉगिन स्क्रीन 1 vconsole पर होगी, और प्रत्येक ग्राफिकल उपयोगकर्ता में लॉग प्रत्येक बाद की vconsole पर कब्जा कर लेगा (जब आप लॉग इन करते हैं, तो आपका सत्र vconsole 2 पर होता है, यदि आप उपयोगकर्ता अगले उपयोगकर्ता को स्विच करेंगे vconsole 3, आदि पर)।
माइकल हैम्पटन

24

आप एक लाइव लिनक्स सीडी के साथ बूट कर सकते हैं और फिर CentOS फाइल सिस्टम को माउंट कर सकते हैं, और वहां से .bashrc फाइल को एडिट कर सकते हैं।


2
सबसे सरल उपाय। गलतफहमी के लिए भी काम करता है जो पूरी तरह से बूट करने या यहां तक ​​कि बूटिंग को रोकता है (जब तक आप जानते हैं कि क्या गलत है और इसे कैसे उल्टा करना है।)
एलेक्सिस

यह बेहद सरल है, खासकर जहां एक वर्चुअलबॉक्स उपयोगकर्ता को बहुत आस-पास बैठे अतिथि ओएस के आईएसओ की गारंटी है। लेकिन मुझे डर है कि मुझे मुरू के जवाब का चयन करना होगा क्योंकि यह और भी सरल है। योगदान के लिए धन्यवाद।
माइकल हॉफमैन

15

ग्रब कॉन्फ़िगरेशन से इनिट / बिन / श

आप GUI पर जाने के बजाय रूट शेल को लोड करने के लिए अपने ग्रब कॉन्फ़िगरेशन को संपादित कर सकते हैं।

  1. अपने वीएम को रिबूट करें
  2. जब ग्रब मेनू प्रकट होता है, तो पहली प्रविष्टि चुनें और eसंपादित करने के लिए दबाएं । यदि यह दिखाई नहीं देता है, तो बूट के दौरान Shift को पुनरारंभ करें और दबाए रखें
  3. linux16या के साथ शुरू होने वाली रेखा का पता लगाएं linux। मेरा ऐसा दिखता है। तुम्हारा थोड़ा अलग हो सकता है

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8
  4. बदले roके लिए rw( केवल पढ़ने के लिए ध्वज को ReadWrite और संलग्न ताकि आप परिवर्तन लिख सकते हैं) init=/bin/shलाइन के लिए। यह स्टार्टअप पर चलने के /bin/shबजाय लाइनक्स को बताता है init। मेरे प्रवेश के लिए उदाहरण

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root rw crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8 init=/bin/sh
  5. कॉन्फ़िगरेशन को चलाने के लिए Ctrl-X दबाएँ। इसे बचाया नहीं जाएगा।

  6. एक रूट शेल दिखाई देगा। अपने संपादन .bashrcऔर अपमानजनक लाइन को हटाने के लिए इसका उपयोग करें ।

    ध्यान दें कि आपको इस स्थिति में ओएस का उपयोग नहीं करना चाहिए क्योंकि शेल पीआईडी ​​1 के रूप में चल रहा होगा, सामान्य रूप से initप्रक्रिया के लिए आरक्षित है। आप मैन्युअल रूप से init जारी रख सकते हैं, exec /sbin/initलेकिन मैं सिर्फ रिबूट करने की सलाह दूंगा

  7. सामान्य रूप से रिबूट। आपके पिछले बदलाव भुला दिए जाएंगे।

हम अनिवार्य रूप से GRUB से लिनक्स में दिए गए बूट विकल्पों को संपादित कर रहे हैं, जो लिनक्स को रूट-फाइल सिस्टम को पढ़ने-लिखने और प्रारंभ /bin/shकरने की प्रक्रिया के लिए बताता है।

यह मेरे लिए Centos 7 और VirtualBox 4.3.12 का उपयोग करके काम करता है


हम्म ... कि पूरी तरह से काम किया (और थोड़ा परेशान - किसी ने अपने लैपटॉप के लिए एक मूल कवच के साथ प्राप्त करने के लिए यह कर सकता है?)। लेकिन जब मैं खोल से बाहर निकला, तो यह कर्नेल घबराहट का कारण बना, इसलिए मुझे नहीं पता कि क्या मैं इसे उत्तर के रूप में चिह्नित कर सकता हूं ... क्या आप बता सकते हैं कि यह क्यों काम करता है? क्या करना है roऔर rw? या बेहतर अभी तक, वहाँ linux16 के लिए एक पृष्ठ है? मैं यहां क्या कर रहा हूं?
माइकल हॉफमैन

5
@MichaelHoffmann यह रूट प्राप्त करने के लिए एक मानक, अच्छी तरह से ज्ञात तरीका है - आपको इसे ब्लॉक करने के लिए बूटलोडर की रक्षा करना होगा। यह कर्नेल घबराहट का कारण बनता है क्योंकि यह कभी भी बाहर निकलने के लिए नहीं है, लेकिन घबराहट अन्यथा हानिरहित है। आप बूट जारी रख सकते हैं exec /sbin/initया वास्तविक जो कुछ भी initहै। roऔर rwविकल्प माउंट जड़ केवल पढ़ने के लिए या पढ़ने-लिखने की। आप इन विकल्पों के साथ बूट लिनक्स को बताने के लिए जीआरयूबी मेनू को अनिवार्य रूप से संपादित कर रहे हैं, जो लिनक्स को रूट फाइलसिस्टम को पढ़ने-लिखने के लिए माउंट करने और इनिट के लिए श को शुरू करने के लिए कहता है।
मुरु

1
@muru ने चीजों को स्पष्ट करने में सहायता के लिए आपकी कुछ टिप्पणियों को उत्तर में जोड़ा।
22

6

.bashrcजगह में एक मरम्मत की प्रतिलिपि scp

यदि आपके पास काम करने के लिए एक और मशीन है, तो टूटी हुई फ़ाइल को कॉपी करें और समस्या को ठीक करें, फिर इसे वापस रखें जहां से यह आया था। यह किसी भी लॉगिन कमांड को लॉग इन करने और इनवॉइस करने से बचता है।

user@backup ~ $ scp user@homehost:~/.bashrc busted.bashrc
user@backup ~ $ vim busted.bashrc # fix, fix
user@backup ~ $ scp busted.bashrc user@homehost:~/.bashrc
user@backup ~ $ rm busted.bashrc

परिशिष्ट: जैसा कि ओपी नीचे इंगित करता है, इसके लिए SSH की आवश्यकता होती है homehost। यदि वह विकल्प नहीं है, लेकिन इसके बजाय एफ़टीपी / एसएफटीपी उपलब्ध है, तो कोई भी फाइल-ट्रांसफर विधि वह करेगी जो आपको चाहिए, जो कि केवल सही लॉगिन फाइल को स्थापित करने के लिए है।


1
यह काम करता है, लेकिन केवल अगर VM इस sshdपर चल रहा है (जो कि मुझे यकीन नहीं है कि डिफ़ॉल्ट रूप से CentOS करता है), और यदि नेटवर्क VirtualBox के साथ और मेजबान में और VM में सही तरीके से कॉन्फ़िगर किया गया है।
माइकल हॉफमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.