Que fait-il. .bashrc fait réellement?

13

Lorsque j'entre un ex. un nouvel alias dans mon .bashrcfichier, je ne peux pas l'utiliser immédiatement dans cette fenêtre de terminal et jusqu'à récemment, je pensais que je devais redémarrer le terminal pour recharger le .bashrcfichier. Puis j'ai découvert quelque part que si j'écris

. .bashrc

cela rechargera le .bashrcfichier dans la fenêtre actuelle et je n'ai pas à redémarrer. Cela fonctionne, mais que se passe-t-il réellement? Pourquoi cela recharge-t-il le .bashrcfichier?

Bêche
la source
1
Avec ., vous "sourcez" le fichier. Ce qui signifie qu'il est exécuté essentiellement
Der Hochstapler
doublon possible de Que fait la source?
Dan D.
1
@DanD. bien que la réponse soit la même, la question me semble tout à fait distincte.
Calimo
1
@Dan D. cette question concerne plus le mening of . . Jusqu'à présent, j'ai toujours pensé . comme raccourci pour le répertoire courant et .. comme raccourci pour le répertoire parent. Je ne m'en suis jamais rendu compte . était un alias pour la source (qui était à son tour un concept complètement nouveau pour moi). Si quelqu'un vient ici et veut connaître la différence, j'ai trouvé Quelle est la différence entre exécuter un script bash et trouver un script bash? être très serviable.
Spade

Réponses:

17

Parce que .c'est une commande.

Il s'agit d'une commande intégrée au shell, qui lit le fichier nommé et y exécute les commandes dans le processus shell actuel.

Le shell Bourne Again a également sourcecomme synonyme de cette commande. Mais c'est un bashisme (que le shell Bourne Again a pris du C Shell). Bien que ce soit un bashisme que le shell Bourne Again partage avec le shell TENEX C, le shell Z et d'autres (mais pas le shell Korn, note). La spécification UNIX unique standardise uniquement ..

Notez également que le comportement de ./ sourcechange subtilement selon que le shell Bourne Again est exécuté en mode compatible POSIX ou non. (Encore une fois, c'est comme les autres shells, bien que leurs comportements non standard ne soient pas identiques les uns aux autres. Avec le Z Shell, par exemple, il existe un mécanisme de script de shell précompilé, et sourcediffère subtilement de la .gestion de son chemin de recherche. Le Korn shell .exécutera des fonctions shell, pour un autre exemple.)

~/.bashrcest simplement l'un des nombreux fichiers dont le contenu (dépendant de la façon dont le processus de shell est appelé) provient automatiquement au démarrage du shell. Rien ne l'empêche d'être sourcé manuellement . Bien que si ses actions ne sont pas idempotentes, vous pourriez avoir un travail de correction à faire par la suite.

Lectures complémentaires

JdeBP
la source
1

help . vous dirait:

.: . 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.

Dire . .bashrcexécute (sources) le fichier .bashrcqui rend les modifications apportées au fichier disponibles dans la session en cours.

Par défaut, ~/.bashrcserait lu lors de la connexion.

.est synonyme de source.

devnull
la source
1

La .commande est la même chose que la sourcecommande, qui exécute votre .bashrcfichier. Cela ajoute tous les alias que vous avez définis et tous les autres paramètres / variables du shell dans l'environnement actuel. Depuis sourcela page d'aide de:

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