Esta pregunta ya tiene una respuesta aquí:
- ¿Por qué .bashrc no se ejecuta automáticamente? 13 respuestas
Encontré a mucha gente descubriendo por qué una instrucción similar a esta:
Put X to your ~/.bashrc and you can do Y
no trabajes
Siempre resulta que los archivos de inicio de bash de Mac OS X (o el propio Bash de Mac) no obtienen el archivo ~ / .bashrc, ya sea en el shell de inicio de sesión o en un shell generado por el sistema de ventanas, como la aplicación Terminal en Mac OS X)
¿Por qué es esto, cuando todos los otros sistemas similares a Unix con Bash con los que he trabajado antes han hecho esto?
PD:
Encontré lo que Bash dice sobre los archivos de inicio (lo que podría ser útil):
Cuando se invoca Bash como un shell de inicio de sesión interactivo, o como un shell no interactivo con la opción --login, primero lee y ejecuta comandos del archivo / etc / profile, si ese archivo existe. Después de leer ese archivo, busca ~ / .bash_profile, ~ / .bash_login y ~ / .profile, en ese orden, y lee y ejecuta comandos del primero que existe y es legible. La opción --noprofile se puede usar cuando se inicia el shell para inhibir este comportamiento.
Fuente: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
fuente
~/.bash_profile
se ejecuta pero no~/.bashrc
. WierdRespuestas:
En OSX, el terminal inicia de forma predeterminada una sesión de inicio de sesión, por lo que lee .bash_profile, etc. (El proceso de inicio de sesión de la GUI que le solicita su nombre y contraseña no utiliza scripts de shell y no inicia ningún shell, todo se realiza desde launchd y el espacio de trabajo)
En otros Unices, xterm ejecuta un shell sin inicio de sesión de forma predeterminada, por lo que leen .bashrc como los scripts que le presentan su contraseña, etc. al iniciar sesión, llaman a la sesión de inicio de sesión y todos los terminales son subprocesos de este y heredan el entorno del shell.
Del documento GNU al que se refirió
fuente
bash
solo lee.bashrc
para shells sin inicio de sesión :Como Terminal comienza
bash
como un shell de inicio de sesión (se ejecutaw
para ver que lasbash
instancias se ejecutan como-bash
),.bashrc
nunca se lee automáticamente.fuente