Wie initialisiere ich ein Terminalfenster neu, anstatt es zu schließen und ein neues zu starten?

49

Wenn ich Änderungen am Shell- / Bash-Verhalten vornehme, z. B. das Einrichten eines Alias, gibt es einen Schnellbefehl, um das Terminalfenster neu zu initialisieren, anstatt ein neues Fenster zu schließen und zu öffnen?

NES
quelle

Antworten:

51

Wenn Sie Ihre .bashrc-Konfiguration neu laden möchten, gehen Sie wie folgt vor:

source ~/.bashrc

Wenn Sie weniger tippen, können Sie Folgendes sourcedurch einen Punkt ersetzen :. ~/.bashrc

narkisr
quelle
2
Hier ist eine Frage, wie verhält sich das anders als source ~/.bashrc?
Crasic
Das tut es nicht. Wenn Sie sich die Bash-Manpage ansehen, werden Sie feststellen, dass die Befehle als äquivalent aufgeführt sind.
Carsten Thiel
2
sourceist ein spezifisches zu Bash. .ist mehr Standard. Beide funktionieren in bash gleich.
Michael Terry
1
Dadurch werden nur Ihr PATH und einige Umgebungsvariablen neu geladen. Es wird nichts "zurückgesetzt". @NES's Antwort ist die richtige.
Cerin
2
Hierdurch wird nichts zurückgesetzt. Wenn Sie Aktualisierungen für PATH vorgenommen haben, sind jetzt Ihre alten und neuen Aktualisierungen verfügbar.
Constantin
39

Einige Zusätze, die ich in der Manpage vom Befehl reset / tset gefunden habe

tset Terminalinitialisierung zurücksetzen

Befehl: reset

Tset initialisiert Terminals. Tset bestimmt zuerst den verwendeten Terminaltyp. Diese Bestimmung wird wie folgt unter Verwendung des ersten gefundenen Terminaltyps durchgeführt.

ein vorteil scheint zu sein, dass es unabhängig von der verwendeten shell ist. funktioniert hier auch mit fisch.

Um also ein Terminal neu zu initialisieren,

$ tset

ODER

$ reset
NES
quelle
Leider ist das auch falsch. Vorhandene Umgebungsvariablen werden nicht zurückgesetzt.
isarandi
9

Eine zusätzliche Option zu der Option exec bashist, dass Sie dies tun können , wenn Sie Ihr .profile(oder .bash_profile) geändert haben

$ exec bash --login

Dadurch wird auch Ihr Profil erneut gelesen. Es würde nicht schaden, auch die -iOption hinzuzufügen , um bash explizit mitzuteilen, dass es sich um eine interaktive Shell handelt, aber normalerweise kann sie dies für sich selbst herausfinden.

Tony Ledford
quelle
für mich funktioniert es auch ohne exec
Armen Sanoyan
Leider auch falsch. Bereits gesetzte Umgebungsvariablen sind noch vorhanden und werden nicht zurückgesetzt.
isarandi
6

Sie müssen die laufende Anwendung / Shell durch eine neue Instanz ersetzen . Wenn Sie beispielsweise bashals bevorzugte Shell verwenden, geben Sie die folgende Zeile in Ihre Befehlszeile ein ( $ ist der Platzhalter für den Anfang Ihrer Befehlszeile):

> $ exec bash

Die laufende Anwendung / Shell wird durch eine neue Instanz von bashlike ersetzt, die von vorne anfängt. Alle Ihre vorherigen Änderungen sind weg.

Anmerkung: Vergessen Sie nicht, dass Ihre Terminalanwendung möglicherweise neu programmiert wird. Sie müssen Ihre Terminalanwendung manuell zurücksetzen.

Raphael Bossek
quelle
2
Was meinst du mit "umprogrammiert"?
Eliah Kagan
0

Ihre Shell ist eine ausführbare Datei, die Sie aufrufen können. Wenn Sie also bash verwenden, können Sie anrufen bashund wenn Sie etwas anderes wie zsh verwenden, können Sie einfach eingebenzsh

Rick
quelle
0

Verwenden Sie exec sudo --login --user $USER.

Wenn Sie auch möchten, dass die zuvor eingegebenen Befehle nicht mehr funktionieren (vollständiges Zurücksetzen des Terminals), kombinieren Sie sie mit resetasreset; exec sudo --login --user $USER

Es gibt viele Antworten im Internet, aber die meisten funktionieren nicht wirklich. Eine einfache Möglichkeit zum Testen besteht darin export SOMEVAR=42, den Befehl zum Zurücksetzen festzulegen und dann auszuführen echo $SOMEVAR. Wenn es 42 ist, wurde die Umgebung nicht zurückgesetzt.

Es gibt auch exec -c bash -loder exec env -i bash -l, aber diese sind kaputt, irgendwie wird die Variable $ HOME danach nicht gesetzt.

isarandi
quelle