Comment puis-je recharger.bashrc sans se déconnecter et revenir?
si je modifie .bashrc
, Comment puis-je le recharger sans me déconnecter et revenir?
14 réponses
il suffit d'entrer la commande:
source ~/.bashrc
ou vous pouvez utiliser la version plus courte de la commande:
. ~/.bashrc
ou vous pouvez utiliser"; 151920920"
exec bash
fait la même chose. (et plus facile à retenir, au moins pour moi)
exec la commande remplace le shell par un programme donné, dans notre exemple, elle remplace notre shell par bash (avec les fichiers de configuration mis à jour)
à complément et Contraste les deux réponses les plus populaires, . ~/.bashrc
et exec bash
:
les deux solutions effectivement recharger ~/.bashrc
, mais il y a des différences:
-
. ~/.bashrc
ousource ~/.bashrc
sera preserve votre shell en cours :- sauf pour les modifications qui rechargent
~/.bashrc
dans le shell actuel ( sourcing ) fait, le shell actuel et son état sont préservé , qui comprend des variables d'environnement, variables de shell, options de shell, fonctions de shell, et l'histoire de commande.
- sauf pour les modifications qui rechargent
-
exec bash
, ou, plus fermement,exec "$BASH"
[1] , est-ce que remplace votre shell actuel par une nouvelle instance, et donc seulement préservez votre shell actuel variables d'environnement (y compris celles que vous avez définies ad-hoc).- en d'autres termes: toute modification ad hoc du shell actuel en termes de variables de shell, les fonctions du shell, les options du shell, l'historique des commandes sont perdues.
selon vos besoins, l'une ou l'autre approche peut être préférée.
[1] exec bash
pourrait en théorie exécuter un différent bash
exécutable que celui qui a démarré le shell courant, s'il se trouve qu'il existe dans un répertoire répertorié plus tôt dans le $PATH
. Comme la variable spéciale $BASH
contient toujours le chemin complet de l'exécutable qui a démarré le shell courant, exec "$BASH"
est garanti d'utiliser l'exécutable même .
Une note re "..."
autour de $BASH
: la double citation garantit que la valeur variable est utilisée telle quelle, sans interprétation par Bash; si la valeur n'a pas d'espaces intégrés ou d'autres métacharges de shell (ce qui n'est pas probable dans ce cas), vous n'avez pas strictement besoin des guillemets, mais leur utilisation est une bonne habitude à prendre forme.
Quelqu'un a modifié ma réponse pour ajouter un anglais incorrect, mais voici l'original, qui est inférieur à la réponse acceptée.
. .bashrc
en fonction de votre environnement, il suffit de taper
bash
peut aussi fonctionner.
avec ceci, vous ne même pas besoin de taper" source ~/.bashrc":
Inclure votre fichier bashrc:
alias rc="vim ~/.bashrc && source ~/.bashrc"
chaque fois que vous voulez éditer votre bashrc, il vous suffit d'exécuter l'alias " rc "
. ~/.bashrc
Alternatives
source ~/.bashrc
exec bash
exec
commande remplace le shell par un programme donné... – WhoSayIn
j'utilise la commande suivante sur msysgit
. ~/.bashrc
version plus courte de
source ~/.bashrc
j'ai remarqué que la commande pure exec bash
préserve les variables d'environnement, il faut donc utiliser exec -c bash
pour exécuter bash dans un environnement vide.
Par exemple, vous vous connectez à un bash, et export A=1
, si vous exec bash
, le A == 1
.
si vous exec -cl bash
, A
est vide.
je pense que c'est la meilleure façon de faire votre travail.
pour moi ce qui fonctionne quand je change le chemin est: exec "$BASH" --login
selon votre environnement, vous voudrez peut-être ajouter des scripts .bashrc se charge automatiquement lorsque vous ouvrez une session SSH. J'ai récemment fait une migration vers un serveur Ubuntu, et là, .de profil, pas .bashrc ou .bash_profile est chargé par défaut. Pour exécuter tous les scripts .bashrc, j'ai dû exécuter source ~/.bashrc
chaque fois qu'une session était ouverte, ce qui n'aide pas quand on exécute des déploiements à distance.
pour avoir votre .bashrc charge automatiquement lors de l'ouverture d'une session, essayez d'ajouter ce pour .profil:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
rouvre votre session, et elle devrait charger tous les chemins/scripts que vous avez .bashrc.
j'ai personnellement
alias ..='source ~/.bashrc'
dans mon bashrc, de sorte que je peux utiliser ".."pour le recharger.