¿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)?


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.


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).


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.