Para crear un alias para la Terminal en OS X, puede poner los alias en .bash_profileo .bashrc. ¿Cuál es la diferencia entre los dos y por qué elegiría poner alias en uno y no en el otro?
terminal
command-line
bash
daviesgeek
fuente
fuente

brew install bashy utilizar iTerm2, podría configurarprofile -> commandpara/usr/local/bin/bashque cargará.bashrcde forma predeterminada después.bash_profile. Esto también te da golosinas de Bash 4 ...Respuestas:
.bash_profilese ejecuta para shells de inicio de sesión, mientras que.bashrcse ejecuta para shells interactivos sin inicio de sesión.Cuando inicia sesión (escriba nombre de usuario y contraseña) a través de la consola, ya sea sentado en la máquina o de forma remota a través de ssh:
.bash_profilese ejecuta para configurar su shell antes del símbolo del sistema inicial.Pero, si ya ha iniciado sesión en su máquina y abre una nueva ventana de terminal (xterm),
.bashrcse ejecuta antes del símbolo del sistema de la ventana..bashrctambién se ejecuta cuando inicia una nueva instancia de bash escribiendo/bin/bashuna terminal.En OS X, Terminal por defecto ejecuta un shell de inicio de sesión cada vez, por lo que esto es un poco diferente a la mayoría de los otros sistemas, pero puede configurarlo en las preferencias.
fuente
On OS X, Terminal by default runs a login shell every time- Siempre he estado tan confundido al no darme cuenta de esto. Gran información!.zprofilese ejecuta cada vez.X11 lo mirará
.bashrcmientras que un Terminal "regular" lo verá.bash_profileSin embargo, si agrega lo siguiente a su
.bash_profile, puede mover todo a su.bashrcarchivo para consolidar todo en un lugar en lugar de dos:fuente
cd ~ ; ln -s .bashrc .bash_profile.~/.bash_profile). También a menudo es necesario tener cosas para definir incrementalmente en cada nivel de shell (~/.bashrc). No es la mejor idea sugerir suprimir esta libertad.~/.bash_profilede cada nueva ventana / pestaña, por lo que no hay realmente una manera de separarlos en lo que respecta al Terminal..bash_profilenunca se puede obtener de nuevo en el proceso secundario. Cada nivel de las fuentes del golpe anidadas.bashrc, por lo que si se pone algo así comoexport A=a:$Aen.bashrc, su$Aobtendrá más tiempo en Bash anidada. Normalmente dejo variables de entorno en el perfil y alias en RC.Para macOS, el código
.bash_profilepara consolidar todo.bashrces el siguiente:Esto es más específico para el usuario del terminal Mac.
fuente
TLDR; use
.bash_profilepara sus alias.La forma en que los diferentes archivos de inicialización funcionan juntos es un poco más complicada, y hay algunos casos especiales importantes en OSX. Aquí están los aspectos más destacados:
.bash_profilese llama. Por lo tanto, el consejo TLDR anterior..bashrctambién es una opción, pero se llamará cada vez que cree una subshell (es decir, invocarbash), lo que puede crear ineficiencia si actualiza una variable dentro de ella (por ejemplo,PATH=/bin/foo:$PATH).bashrcdesde.bash_profileson bastante comunes. No lo recomiendo, pero es una preferencia.fuente
.bash_profilepara alias complicado? Los elementos que enumera solo son parcialmente sobre alias, por lo que en lugar de enumerar algunas viñetas que podrían explicar por qué parece ser complicado, ¿puede proponer una forma de facilitarlo dentro de estas restricciones?