Laden Sie das .profile von bash neu, ohne sich aus- und wieder einzuloggen

81

Ist es möglich, Bash zu erzwingen, um die .profile-Datei neu zu laden, ohne sich aus- und wieder einzuloggen?

Matty
quelle

Antworten:

102

Dies sollte für das aktuelle Terminal funktionieren:

. ~/.profile

.a bashbuiltin und ein Synonym für source, siehe man bash:

. Dateiname [ Argumente ]
Quelle Dateiname [ Argumente ]
     Liest und führt Befehle von Dateiname in der aktuellen Shell-Umgebung aus (…).

Lukas Stejskal
quelle
18
Es wird nur im aktuellen Terminal wirksam.
Enzotib
@enzotib Gibt es eine Möglichkeit, das zu umgehen?
Matty
14
@Matty: Nein, um die Änderungen für die gesamte grafische Umgebung sichtbar zu machen, können Sie die Sitzung nur neu starten
enzotib
2
Das einzige Problem dabei ist, dass, wenn Sie etwas aus dem Pfad entfernen, es erst nach einem Neustart wirksam wird
Aras
1
@Aras macht einen wichtigen Punkt , die Erweiterung verdient: Wenn etwas entfernt von ~/.profile, werde diese Änderung nicht wirksam , nachdem nehmen . ~/.profilereload. Fügen Sie zum Beispiel eine Funktion zu ~/.profile: function externalip () { curl http://ipecho.net/plain; echo; }, dann ~/.profile- es funktioniert. Entfernen Sie nun diese Funktion von ~/.profileund dann . ~/.profilewieder. Die Funktion ist weiterhin verfügbar. Nur ein Neustart (Abmelden und Anmelden) entfernt sie.
Seamus
13

Wenn Sie keine neue Shell starten möchten, sondern das Skript in der aktuellen Shell ausführen möchten, geben Sie Folgendes ein:

source script_name.sh

source = .

Die Bash source-Funktion ist ein Synonym für den Bourne-Shell- .Befehl (Punkt).

mit freundlicher Genehmigung von tldp.org

Amey Jah
quelle