Quand je définis un nouvel alias dans le file .bash_aliases
ou une nouvelle fonction dans le file .bashrc
, y a-t-il une command de rafraîchissement pour pouvoir utiliser immédiatement les nouveaux alias ou fonctions sans fermer le terminal (dans mon cas terminal xfce4 avec quelques tabs ouverts , de nombreux files ouverts et au milieu du travail)?
L'approvisionnement du file modifié donnera access au nouvel alias ou à la nouvelle fonction du terminal actuel, par exemple:
source ~/.bashrc
Une syntaxe alternative:
. ~/.bashrc
Notez que si vous avez plusieurs instances de bash dans votre terminal (vous avez mentionné plusieurs tabs), vous devrez l'exécuter dans chaque instance.
Dactylographie . ~/.bashrc
. ~/.bashrc
à la command line exécutera .bashrc
et donc toutes les fonctions définies dans ce file seront créées.
.bashrc
lui-même appellera et exécutera aussi .bash_aliases
( s'il existe) si .bashrc
a ce code dedans:
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
tandis que l'utilisation . ~/.bash_aliases
. ~/.bash_aliases
seul (à la command line par exemple) essaiera juste d'exécuter .bash_aliases
sans impliquer .bashrc et donnera une erreur si le file n'existe pas (d'où le test de vérification de file dans .bashrc
).
Parfois, vous voudrez transformer un alias en une fonction, mais quand vous générez le file bashrc, une erreur bizarre peut se produire, quelque chose comme ceci:
. ~/.bashrc bash: /home/username/.bashrc: line 38: syntax error near unexpected token `(' bash: /home/username/.bashrc: line 38: `hello_world() {'
Cela se produit parce que le nom d'alias est en conflit avec le nom de la fonction nouvellement définie. Pour autant que je sache, pour éviter celui-ci a deux options:
La première méthode consiste à utiliser exec bash
, l'inconvénient est que vous perdez votre environnement:
bash-4.3 $ [1]: env_var="a value" ----------------------------------------------------------------------- bash-4.3 $ [2]: echo $env_var a value ----------------------------------------------------------------------- bash-4.3 $ [3]: exec bash ----------------------------------------------------------------------- bash-4.3 $ [1]: echo $env_var -----------------------------------------------------------------------
Donc, cela nous laisse avec la deuxième méthode, qui est de tout unalias, puis la source du file bashrc. Cela préserve notre environnement (à l'exception notable des alias):
bash-4.3 $ [1]: unalias -a && . $HOME/.bashrc
Normalement, je l'ai comme un alias dans mon bashrc par le nom de rechargement.