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

56

Lorsque je définis un nouvel alias dans un .bash_aliasesfichier ou une nouvelle fonction dans un .bashrcfichier, existe-t-il une commande d'actualisation permettant d'utiliser immédiatement le nouvel alias ou les nouvelles fonctions sans fermer le terminal (dans mon cas, xfce4-terminal avec quelques onglets ouverts, de nombreux fichiers ouverts)? et au milieu du travail)?

Xralf
la source
6
Notez qu’aucune commande ne fera connaître cette nouvelle commande dans tous vos terminaux / onglets ouverts. Vous devrez faire le . .bashrcou source .bashrcdans chaque shell ouvert.
Paul Tomblin

Réponses:

66

La recherche du fichier modifié donnera accès au nouvel alias ou fonction nouvellement écrit dans le terminal actuel, par exemple:

source ~/.bashrc

Une syntaxe alternative:

. ~/.bashrc

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

jasonwryan
la source
3
sourceest dérivé de csh. La manière de bourne est . .bashrc.
Paul Tomblin
C'est intéressant que cela ne fonctionne pas lorsque je définis alias prg='prg.py'. Je dois fermer le terminal.
xralf
"vous devrez exécuter ceci dans chaque cas." - Notez que les utilisateurs de zsh peuvent définir TMOUT et TRAPALRM de manière appropriée sur stat et (si nécessaire) re-source ~ / .zshrc une fois par seconde ou à tout autre intervalle raisonnable. Je ne crois pas que Bash puisse le faire, cependant.
Kevin
6

En tapant . ~/.bashrcsur la ligne de commande, .bashrcles fonctions définies dans ce fichier seront créées.

.bashrclui-même appellera et se lancera .bash_aliases( s’il existe) si .bashrccontient ce code:

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

alors que l’utilisation . ~/.bash_aliasesseule (sur la ligne de commande, par exemple) essaiera de s’exécuter .bash_aliasessans impliquer .bashrc et donnera une erreur si le fichier n’existe pas (d’où le test de vérification du fichier une fois entré .bashrc).

Michael Durrant
la source
2

Parfois, vous voudrez transformer un alias en une 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 être dû au fait que le nom d'alias se heurte au nom de la fonction nouvellement définie. Autant que je sache, pour éviter cela, il faut tout unaliser, puis recherchez le fichier bashrc:

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