Para crear un alias para la Terminal en OS X, puede poner los alias en .bash_profile
o .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 bash
y utilizar iTerm2, podría configurarprofile -> command
para/usr/local/bin/bash
que cargará.bashrc
de forma predeterminada después.bash_profile
. Esto también te da golosinas de Bash 4 ...Respuestas:
.bash_profile
se ejecuta para shells de inicio de sesión, mientras que.bashrc
se 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_profile
se 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),
.bashrc
se ejecuta antes del símbolo del sistema de la ventana..bashrc
también se ejecuta cuando inicia una nueva instancia de bash escribiendo/bin/bash
una 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!.zprofile
se ejecuta cada vez.X11 lo mirará
.bashrc
mientras que un Terminal "regular" lo verá.bash_profile
Sin embargo, si agrega lo siguiente a su
.bash_profile
, puede mover todo a su.bashrc
archivo 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_profile
de cada nueva ventana / pestaña, por lo que no hay realmente una manera de separarlos en lo que respecta al Terminal..bash_profile
nunca 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:$A
en.bashrc
, su$A
obtendrá más tiempo en Bash anidada. Normalmente dejo variables de entorno en el perfil y alias en RC.Para macOS, el código
.bash_profile
para consolidar todo.bashrc
es el siguiente:Esto es más específico para el usuario del terminal Mac.
fuente
TLDR; use
.bash_profile
para 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_profile
se llama. Por lo tanto, el consejo TLDR anterior..bashrc
tambié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
).bashrc
desde.bash_profile
son bastante comunes. No lo recomiendo, pero es una preferencia.fuente
.bash_profile
para 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?