Was macht . .bashrc eigentlich?

13

Wenn ich ein zB eingebe. Ein neuer Alias ​​in meiner .bashrcDatei Ich kann ihn in diesem Terminalfenster nicht sofort verwenden und bis vor kurzem dachte ich, ich müsse das Terminal neu starten, um die .bashrcDatei neu zu laden . Dann habe ich irgendwo herausgefunden, dass wenn ich schreibe

. .bashrc

Dadurch wird die .bashrcDatei im aktuellen Fenster neu geladen und ich muss nicht neu starten. Das funktioniert flossen aber was ist eigentlich los? Warum wird die .bashrcDatei dadurch neu geladen ?

Spaten
quelle
1
Mit ."quellen" Sie die Datei. Das heißt, es wird im Grunde ausgeführt
Der Hochstapler
mögliches Duplikat von Was macht die Quelle?
Dan D.
1
@DanD. Während die Antwort dieselbe ist, klingt die Frage für mich ganz anders.
Calimo
1
@ Dan D. Diese Frage ist mehr über die Mening von . . Bisher habe ich immer darüber nachgedacht . als Kurzform für das aktuelle Verzeichnis und .. als Kurzform für das übergeordnete Verzeichnis. Ich habe es nie bemerkt . war ein Alias ​​für die Quelle (was wiederum ein völlig neues Konzept für mich war). Wenn jemand hierher kommt und den Unterschied wissen möchte, den ich gefunden habe Was ist der Unterschied zwischen der Ausführung eines Bash-Skripts und der Beschaffung eines Bash-Skripts? sehr hilfreich sein.
Spade

Antworten:

17

Weil .es ein Befehl ist.

Es ist ein in die Shell integrierter Befehl, der die angegebene Datei liest und die darin enthaltenen Befehle im aktuellen Shell-Prozess ausführt.

Die Bourne Again-Shell hat sourceauch ein Synonym für diesen Befehl. Dies ist jedoch ein Bashismus (den die Bourne Again-Shell der C-Shell entnommen hat). Obwohl es ein Bashismus ist, den die Bourne Again-Shell mit der TENEX C-Shell, der Z-Shell und anderen (aber nicht der Korn-Shell, Anmerkung) teilt. Die Single UNIX-Spezifikation standardisiert nur ..

Beachten Sie auch, dass sich das Verhalten von ./ sourcegeringfügig ändert, je nachdem, ob die Bourne Again-Shell im POSIX-kompatiblen Modus ausgeführt wird oder nicht. (Wiederum ist dies wie bei anderen Shells, obwohl deren nicht standardmäßiges Verhalten nicht dem des anderen entspricht. Bei der Z-Shell gibt es zum Beispiel einen vorkompilierten Shell-Skriptmechanismus, der sich sourcegeringfügig von der .Behandlung des Suchpfads unterscheidet .) Korn Shell .wird Shell-Funktionen ausführen, für ein anderes Beispiel.)

~/.bashrcist lediglich eine von mehreren Dateien, deren Inhalt (abhängig davon, wie der Shell-Prozess aufgerufen wird) beim Starten der Shell automatisch bezogen wird . Es gibt nichts, was es verbietet, manuell beschafft zu werden. Wenn seine Aktionen nicht idempotent sind, müssen Sie möglicherweise später einige Korrekturen vornehmen.

Weitere Lektüre

JdeBP
quelle
1

help . würde dir sagen:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Saying . .bashrcführt die Datei aus (Quelle) .bashrc, wodurch die an der Datei vorgenommenen Änderungen in der aktuellen Sitzung verfügbar werden.

Standardmäßig ~/.bashrcwürde bei der Anmeldung gelesen werden.

.ist ein Synonym für source.

devnull
quelle
1

Der .Befehl entspricht dem sourceBefehl, der Ihre .bashrcDatei ausführt . Dadurch werden alle von Ihnen definierten Aliase und alle anderen Shell-Einstellungen / Variablen zur aktuellen Umgebung hinzugefügt. Von sourceder Hilfeseite:

source: source filename [arguments]
    Execute commands from a file in the current shell.
ethanwu10
quelle