Warum muss ich den Quellbefehl ausführen, damit der .bashrc-Alias ​​angewendet wird?

Warum muss ich den Quellbefehl ausführen, damit der .bashrc-Alias ​​angewendet wird?

Obwohl ich verstehe, dass dieser sourceBefehl ein Programm in der aktuellen Shell ausführt, verstehe ich nicht ganz, warum wir source .bashrcdie .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 .bashrcwir „laden“ die Datei einfach „neu“.

Warum wird es nicht automatisch neu geladen?

Wahrscheinlich übersehe ich etwas.

Wie funktioniert es im Hintergrund? Warum brauchen wir sourcediese Datei, damit neue Aliase ohne Abmeldung funktionieren?

Antwort1

.bashrcwird 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 .bashrcerneut 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 .bashrcDatei erneut (in der alten Sitzung werden jedoch keine Änderungen vorgenommen).

BTW. .bashrcDateiIstein 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.

verwandte Informationen