¿Por qué debo obtener .bashrc cada vez que abro el terminal para que funcionen los alias? [duplicar]

25

Agregué esta línea en mi ~/.bashrcarchivo.

alias myserver='ssh [email protected]'

Sin embargo, cuando abro el terminal y ejecuto myserver, el terminal se queja de que

-bash: myserver: command not found

Sin embargo, cuando obtengo mi archivo .bashrc ( . .bashrc), el alias funciona.

Sin embargo, no quiero obtener el archivo cada vez que abro el terminal para que funcione el alias. ¿Cómo hago que eso suceda?

David Faux
fuente
3
Este comentario explica la razón de esto. Esa pregunta te dice cómo solucionarlo.
ughoavgfhw
¡Muchas gracias! No sabía que al iniciar el shell se ejecutan esos archivos en orden. De hecho, agregando . .bashrca las .bash_profileobras.
David Faux
@ughoavgfhw ¿puede / debería cambiar su comentario a una respuesta? De esa manera se puede marcar como una respuesta.
soxman

Respuestas:

25

En resumen, está colocando sus alias en el archivo incorrecto .bashrc, es por eso que debe seguir ejecutando la fuente para que los alias funcionen en cualquier nueva instancia de terminal de inicio de sesión.

Del comentario de Chris Johnsen en ¿Por qué .bashrc no se ejecuta automáticamente?

Por defecto, Terminal inicia el shell a través de / usr / bin / login, lo que hace que el shell sea un shell de inicio de sesión. En todas las plataformas (no solo Mac OS X), bash no usa .bashrc para shells de inicio de sesión (solo / etc / profile y el primero de .bash_profile, .bash_login, .profile que existe y es legible). Esta es la razón por la cual "poner source ~ / .bashrc en su .bash_profile" es un consejo estándar.

Para obtener más información, consulte la página del manual para bash:

man bash

Luego mire debajo de la sección INVOCACIÓN.

MrDaniel
fuente
¿Necesito reiniciar para que las cosas funcionen? Porque agregué source ~/.bashrca mi .bash_profile, pero todavía estoy enfrentando el mismo problema ...
Michiel
1
No, en la mayoría de los casos solo necesita abrir una nueva ventana de terminal para que los cambios surtan efecto, los cambios solo tendrán efecto en la ventana recién abierta.
MrDaniel
11

Siempre puedes poner

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

en el archivo ~/.profileo ~/.bash_profileen Mac, creo.

Oooor, podrías poner tus cosas en .profileo .bash_profile.

Dylan
fuente
Esto se observa en la otra respuesta: ¿por qué no estás seguro de estas cosas?
user151019
Lea esta pregunta muy similar: apple.stackexchange.com/q/12993/22003 y agregue cualquier mejora.
dan
@danielAzuelos Espera; ¿Quieres que comente en la otra página o actualice mi respuesta en función de la otra pregunta?
Dylan
@ Mark Solo estaba pensando en un sentido muy hipotético, como ¿qué pasaría si el proceso terminal de alguien no supiera el origen del perfil? Su terminal probablemente no comenzaría en primer lugar, pero aún es posible ... como si alguien estuviera pirateando su / usr / bin / login o algo así.
Dylan
→ Dylan: lea esta pregunta muy similar: apple.stackexchange.com/q/12993/22003 y encontrará una respuesta a su "¿tal vez?".
dan