web-dev-qa-db-fra.com

Actualiser les alias et les fonctions après avoir défini de nouveaux alias et fonctions?

Lorsque je définis un nouvel alias dans .bash_aliases fichier ou une nouvelle fonction dans .bashrc fichier, existe-t-il une commande de rafraîchissement pour pouvoir utiliser immédiatement les nouveaux alias ou fonctions sans fermer le terminal (dans mon cas xfce4-terminal avec quelques onglets ouverts, beaucoup de fichiers ouverts et au milieu du travail)?

58
xralf

La recherche du fichier modifié donnera accès à l'alias ou à la fonction nouvellement écrite dans le terminal actuel, par exemple:

source ~/.bashrc

Une syntaxe alternative:

. ~/.bashrc

Notez que si vous avez plusieurs instances de bash en cours d'exécution dans votre terminal (vous avez mentionné plusieurs onglets), vous devrez l'exécuter dans chaque instance.

68
jasonwryan

Taper . ~/.bashrc sur la ligne de commande s'exécutera .bashrc et ainsi toutes les fonctions définies dans ce fichier seront créées.

.bashrc lui-même appellera et exécutera également .bash_aliases (si il existe) si .bashrc contient ce code:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

alors qu'en utilisant . ~/.bash_aliases seul (sur la ligne de commande par exemple) essaiera simplement d'exécuter .bash_aliases sans impliquer .bashrc et donnera une erreur si le fichier n'existe pas (d'où le test de vérification de fichier en .bashrc).

6
Michael Durrant

Parfois, vous souhaiterez transformer un alias en fonction, mais lorsque vous sourcez le fichier bashrc, une erreur étrange peut se produire:

. ~/.bashrc
bash: /home/username/.bashrc: line 38: syntax error near unexpected token `('
bash: /home/username/.bashrc: line 38: `hello_world() {'

Cela peut se produire car le nom d'alias est en conflit avec le nom de la fonction nouvellement définie. Pour autant que je sache, pour éviter cela, il faut tout désaliaser, puis sourcez le fichier bashrc:

bash-4.3 $
unalias -a && . $HOME/.bashrc
2
Samuel