¿Actualizar alias y funciones después de definir nuevos alias y funciones?

56

Cuando defino un nuevo alias en el .bash_aliasesarchivo o una nueva función en el .bashrcarchivo, ¿hay algún comando de actualización para poder usar inmediatamente los nuevos alias o funciones sin cerrar el terminal (en mi caso xfce4-terminal con algunas pestañas abiertas, muchos archivos abiertos y en medio del trabajo)?

xralf
fuente
66
Tenga en cuenta que no hay ningún comando que haga que ese nuevo comando sea conocido en todas sus terminales / pestañas abiertas. Tendrás que hacer el . .bashrco source .bashrcen cada caparazón que tengas abierto.
Paul Tomblin

Respuestas:

66

Obtener el archivo modificado proporcionará acceso al alias o función recién escrito en el terminal actual, por ejemplo:

source ~/.bashrc

Una sintaxis alternativa:

. ~/.bashrc

Tenga en cuenta que si tiene muchas instancias de bash ejecutándose en su terminal (mencionó varias pestañas), tendrá que ejecutar esto en cada instancia.

jasonwryan
fuente
3
sourcees derivado de csh. La forma de bourne shell es . .bashrc.
Paul Tomblin
Es interesante que esto no funcione cuando lo defino alias prg='prg.py'. Tengo que cerrar la terminal.
xralf
"Tendrás que ejecutar esto en cada caso". - Tenga en cuenta que los usuarios de zsh pueden configurar TMOUT y TRAPALRM de manera apropiada para stat y (si es necesario) volver a buscar ~ / .zshrc una vez por segundo, o en cualquier otro intervalo razonable. Sin embargo, no creo que bash pueda hacer esto.
Kevin
6

Escribir . ~/.bashrcen la línea de comando se ejecutará .bashrcy, por lo tanto, se crearán las funciones definidas en ese archivo.

.bashrcentonces también llamará y se ejecutará .bash_aliases( si existe) si .bashrctiene este código:

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

mientras que usar . ~/.bash_aliasessolo (en la línea de comando, por ejemplo) solo intentará ejecutarse .bash_aliasessin involucrar a .bashrc y dará un error si el archivo no existe (de ahí la prueba de verificación de archivo cuando está en .bashrc).

Michael Durrant
fuente
2

A veces querrás convertir un alias en una función, pero cuando obtienes el archivo bashrc, puede ocurrir un error extraño:

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

Esto puede estar sucediendo porque el nombre del alias está en conflicto con el nombre de la función recién definida. Hasta donde yo sé, para evitar esto, se necesita desalinear todo, luego obtener el archivo bashrc:

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