When I define a new alias in .bash_aliases
file or a new function in .bashrc
file, is there some refresh command to be able immediately use the new aliases or functions without closing the terminal (in my case xfce4-terminal with a few tabs open, many files open and in the middle of the work)?

- 42,013

- 15,415
3 Answers
Sourcing the changed file will provide access to the newly written alias or function in the current terminal, for example:
source ~/.bashrc
An alternative syntax:
. ~/.bashrc
Note that if you have many instances of bash running in your terminal (you mentionned multiple tabs), you will have to run this in every instance.

- 20,023

- 73,126
-
3
-
That's interesting that this doesn't work when I define
alias prg='prg.py'
. I have to close terminal. – xralf Oct 20 '11 at 11:49 -
"you will have to run this in every instance." - Note that zsh users can set TMOUT and TRAPALRM appropriately to stat and (if necessary) re-source ~/.zshrc once per second, or at any other reasonable interval. I don't believe bash can do this, though. – Kevin Nov 11 '16 at 00:18
Typing . ~/.bashrc
at the command line will run .bashrc
and so any functions defined in that file will be created.
.bashrc
itself will then also call and run .bash_aliases
(if it exists) if .bashrc
has this code in it:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
whereas using . ~/.bash_aliases
alone (at the command line for example) will just try and run .bash_aliases
without involving .bashrc and will give an error if the file doesn't exist (hence the file check test when in .bashrc
).

- 42,013
Sometimes you will want to turn an alias into a function, but when you source the bashrc file, a weird error may occur:
. ~/.bashrc
bash: /home/username/.bashrc: line 38: syntax error near unexpected token `('
bash: /home/username/.bashrc: line 38: `hello_world() {'
This may be happening because the alias name is clashing with the name of the newly defined function. As far as I know, to avoid this one needs to unalias everything, then source the bashrc file:
bash-4.3 $
unalias -a && . $HOME/.bashrc

- 292
. .bashrc
orsource .bashrc
in every shell you have open. – Paul Tomblin Oct 19 '11 at 12:05