.bashrc überschrieben, aber dennoch bezogen - wie kann es wiederhergestellt werden?


19

Wenn ich einen Befehl finde, den ich als Alias ​​verwenden möchte, gebe ich diesen normalerweise wie folgt an meine .bashrc-Datei weiter:

[up button pressed to last command, then line edited so that it reads]
$echo "command-i-just-did" >> ~/.bashrc

Möglicherweise gibt es einen besseren Weg, dies zu tun. Aber im Moment habe ich die gesamte RC-Datei mit einem einzigen Chevron überschrieben. Da die .bashrc-Datei jedoch immer noch aktuell ist, werden meine alten Aliase (vorerst natürlich) weiterhin akzeptiert. Gibt es also eine Möglichkeit, es wiederherzustellen?


6
echo "set -o noclobber" > ~/.bashrc(Denken Sie daran, eine zweite spitze Klammer hinzuzufügen)
Denken Sie hhaamu


1
Für die Zukunft: Sichern Sie Ihre Dateien, damit dies kein Problem darstellt. Sie können auch eine separate Datei für diese schnellen Add-Ons erstellen und diese wie in .bashrc auslagern. Bietet ein grundlegendes Sicherheitsnetz und kann bei Bedarf problemlos ein- und ausgeschaltet werden.
Joe

2
Sie können Ihre aktuellen Einstellungen speichern , aber wenn Ihr .bashrcalle hatten Logik darin , dass wie Host, Benutzer usw. auf lokale Variablen abhängig , die wahrscheinlich nicht wiederherstellbar ist. Die eigentliche Antwort ist die Wiederherstellung von Ihrem letzten Backup. Sie haben ein aktuelles Backup oder?
JW013

Antworten:


22
  • alias ohne Parameter gibt die Definitionen der aktuell definierten Aliase aus.
  • declare -f gibt die Definitionen der aktuell definierten Funktionen aus.
  • export -p gibt die Definitionen der aktuell definierten Variablen aus.

Alle diese Befehle geben Definitionen aus, die zur Wiederverwendung bereit sind. Sie können ihre Ausgaben direkt auf eine neue umleiten ~/.bashrc .

Alle Listen enthalten viele Elemente, die an anderer Stelle definiert sind, zum Beispiel /etc/profileund /etc/bash_completion. Sie müssen die Liste also manuell bereinigen.


3
Ich würde auch vorschlagen, mit der Standardeinstellung .bashrcfür Ihr System zu beginnen. In Debian ist es in /etc/skel, oder Sie können einen neuen Benutzer erstellen, wenn Sie können, um einen brandneuen zu erhalten .bashrc.
Enzotib

1
setund declare(ohne Argumente) zeigen all dies auf einmal an.
rozcietrzewiacz

@enzotib, tolle Idee. Ich habe mich gefragt, wo sich die Standard-.bashrc befinden würde ...
ixtmixilix

1

typeset -f > .bashrc sollte es tun, vorausgesetzt, Sie hatten nur Aliase.


Der functionsBefehl existiert für mich nicht auf 4.2.10(2)-release. Du meinst wahrscheinlich declare -f.
Chris Down

Eigentlich meinte ich "gesetzt -f"
Paul Tomblin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.