Obwohl ich verstehe, dass dieser source
Befehl ein Programm in der aktuellen Shell ausführt, verstehe ich nicht ganz, warum wir source .bashrc
die .bashrc-Datei „neu laden“ müssen.
So wie ich es verstehe, führen wir durch das Hinzufügen eines Alias zu .bashrc kein Skript aus – source .bashrc
wir „laden“ die Datei einfach „neu“.
Warum wird es nicht automatisch neu geladen?
Wahrscheinlich übersehe ich etwas.
Wie funktioniert es im Hintergrund? Warum brauchen wir source
diese Datei, damit neue Aliase ohne Abmeldung funktionieren?
Antwort1
.bashrc
wird nur einmal gelesen, wenn Bash gestartet wird. Das ist so gewollt (und war schon immer so). Wenn Sie später Änderungen an vornehmen .bashrc
, werden diese erst angewendet, wenn .bashrc
erneut gelesen wird. Indem Sie ausführen source .bashrc
, tun Sie genau das – Sie sagen Bash, dass die Datei erneut gelesen werden soll.
Natürlich können Sie auch eine neue Kopie der Bash starten (indem Sie beispielsweise eine neue Terminalsitzung starten). Dadurch liest der neue Bash-Prozess die .bashrc
Datei erneut (in der alten Sitzung werden jedoch keine Änderungen vorgenommen).
BTW. .bashrc
DateiIstein Skript, und indem Sie es als Quelle verwenden, führen Sie die in dieser Datei enthaltenen Befehle aus. Die Befehle definieren in Ihrem Fall Aliase, aber in dieser Datei können praktisch alle Befehle enthalten sein.