it-swarm.com.de

So bearbeiten Sie .bashrc ohne sich anzumelden

Dies ist wahrscheinlich eine doppelte Frage, aber ich kenne den Anmelde-/Startvorgang von CentOS (insbesondere auf einer VM) nicht gut genug, um zu wissen, wonach gesucht werden muss.

Ich verwende CentOS 7 in VirtualBox. Ich habe versehentlich gnome-terminal an das Ende meiner ~/.bashrc-Datei angehängt. Wenn ich mich anmelde, wird jetzt ein Terminalfenster geöffnet. Diese Terminalsitzung führt .bashrc aus, wodurch ein anderes Fenster usw. usw. geöffnet wird, und ich bin mit einer Menge gnome-terminal-Terminalfenstern überflutet.

Ich versuche, mich bei einer Terminalsitzung ohne die GUI-Anmeldung anzumelden (gnome-terminal schlägt fehl), aber ich kann es nicht zum Booten ohne die GUI bringen. Ich habe versucht, die Antworten auf diese Frage zu verwenden, ohne Erfolg. Ich erhalte jedes Mal eine GUI-Anmeldung: Wie starte ich CentOS in der CLI? . Gibt es eine andere Möglichkeit, die Grub-Konfiguration beim Booten zu bearbeiten, oder eine Möglichkeit, über die GUI-Anmeldung zu einer neuen Terminal-Instanz zu gelangen, wie Strg + Alt + F1 in Ubuntu? (Ja, ich habe es versucht. Entweder funktioniert es nicht in CentOS 7, oder es funktioniert nicht in einer VirtualBox-VM.) Oder kann ich eine Terminalsitzung auch ohne GUI erstellen, um meine zu bearbeiten .bashrc und dieses Durcheinander beheben?

16

CtrlAltF1 wird möglicherweise vom Host erfasst, oder VirtualBox gibt es möglicherweise nicht richtig weiter. Ein paar schnelle Tests zeigen mir, dass Sie den in VirtualBox definierten Host Schlüssel anstelle von verwenden können CtrlAlt (könnte der Linke sein Ctrloder die Linke  auf Macs). Also drücken F1 in VirtualBox für mich auf TTY1 umgestellt (und ähnlich für F7 zurück zur GUI).

12
muru

Sie könnten mit einer Live-Linux-CD booten und dann das CentOS-Dateisystem einhängen und die .bashrc-Datei von dort aus bearbeiten.

23
Charles Burge

Init/bin/sh aus der Grub-Konfiguration

Sie können Ihre Grub-Konfiguration bearbeiten, um eine Root-Shell zu laden, anstatt zur GUI zu wechseln.

  1. Starten Sie Ihre VM neu
  2. Wenn das Grub-Menü angezeigt wird, wählen Sie den ersten Eintrag aus und drücken Sie e, um ihn zu bearbeiten. Wenn dies nicht der Fall ist, starten Sie den Computer neu und halten Sie die Umschalttaste während des Startvorgangs gedrückt
  3. Suchen Sie die Zeile, die mit linux16 oder linux beginnt. Meins sieht so aus. Ihre können leicht abweichen

    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. Ändern Sie das Flag ro in rw ( readonly in readwrite , damit Sie schreiben können init=/bin/sh an die Zeile anhängen. Dies weist Linux an, beim Start /bin/sh anstelle von init auszuführen. Beispiel für meinen Eintrag

    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. Drücken Sie Strg-X, um die Konfiguration auszuführen. Es wird nicht gespeichert.

  6. Eine Root-Shell wird angezeigt. Verwenden Sie es, um Ihren .bashrc zu bearbeiten und die störende Zeile zu entfernen.

    Beachten Sie, dass Sie das Betriebssystem in diesem Zustand nicht weiter verwenden sollten, da die Shell als PID 1 ausgeführt wird, die normalerweise für den Prozess init reserviert ist. Sie können init mit exec /sbin/init manuell fortsetzen, aber ich würde nur einen Neustart empfehlen

  7. Starten Sie wie gewohnt neu. Ihre vorherigen Änderungen werden vergessen.

Wir bearbeiten im Wesentlichen die von GRUB an Linux übergebenen Startoptionen, die Linux anweisen, das Root-Dateisystem mit Lese-/Schreibzugriff bereitzustellen und /bin/sh für den Init-Prozess zu starten

Dies funktioniert für mich mit Centos 7 und VirtualBox 4.3.12

14
lex

scp eine reparierte Kopie von .bashrc ein

Wenn Sie einen anderen Computer haben, von dem aus Sie arbeiten können, nehmen Sie eine Kopie der beschädigten Datei und beheben Sie das Problem. Setzen Sie sie dann wieder dort ab, wo sie herkam. Dadurch wird vermieden, dass Sie sich anmelden und einen der Anmeldebefehle aufrufen.

[email protected] ~ $ scp [email protected]:~/.bashrc busted.bashrc
[email protected] ~ $ vim busted.bashrc # fix, fix
[email protected] ~ $ scp busted.bashrc [email protected]:~/.bashrc
[email protected] ~ $ rm busted.bashrc

Nachtrag: Wie OP weiter unten ausführt, erfordert dies SSH-Zugriff auf homehost. Wenn dies keine Option ist, aber stattdessen FTP/SFTP verfügbar ist, wird eine beliebige Dateiübertragungsmethode ausgeführt, die lediglich zum Installieren der korrigierten Anmeldedatei erforderlich ist.

5
gws