¿Por qué la fuente de Mac OS X ~ / .bashrc? [duplicar]

84

Encontré a muchas personas que entienden por qué una instrucción similar a esta:

Put X to your ~/.bashrc and you can do Y

no funciona.

Resulta que los archivos de inicio de bash de Mac OS X (o el propio Bash de Mac) no generan el archivo ~ / .bashrc, ya sea en el shell de inicio de sesión o en un shell creado a partir del sistema de ventanas, como la aplicación Terminal en Mac OS X)

¿Por qué sucede esto cuando todos los otros sistemas similares a Unix con Bash con los que he trabajado antes han hecho esto?

PS:

Encontré lo que Bash dice sobre los archivos de inicio (lo que podría ser útil):

  

Cuando Bash se invoca como shell de inicio de sesión interactivo, o como   shell no interactivo con la opción --login, primero lee y   ejecuta comandos desde el 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 desde   El primero que existe y es legible. La opción --noprofile puede   se utilizará cuando se inicie el shell para inhibir este comportamiento.

Fuente: enlace

    
pregunta Paul Brewczynski 03.02.2014 - 13:31

2 respuestas

81

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 solicita su nombre y contraseña no usa scripts de shell y no inicia ningún shell, todo se realiza desde launchd y el área de trabajo)

En otros Unices, xterm ejecuta un shell que no es de inicio de sesión de manera predeterminada, por lo que leen .bashrc como los scripts que le presentan su contraseña, etc. Al iniciar sesión, llame a la sesión de inicio de sesión y todos los terminales son subprocesos de esto y heredan el entorno de shell. / p>

Del documento GNU al que te refieres

  

Se invoca como un shell interactivo sin inicio de sesión

     

Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, Bash   lee y ejecuta comandos desde ~ / .bashrc, si ese archivo existe. Esta   puede ser inhibido usando la opción --norc. La opción de archivo --rcfile   forzará a Bash a leer y ejecutar comandos desde un archivo en lugar de   ~ / .bashrc.

     

Por lo general, tu ~ / .bash_profile contiene la línea

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 
     

después (o antes) de cualquier   Inicializaciones específicas de inicio de sesión.

    
respondido por el Mark 03.02.2014 - 13:42
19

bash solo lee .bashrc para inicios de sesión shells:

  

Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta los comandos desde          ~ / .bashrc, si ese archivo existe. Esto puede ser inhibido usando la opción --norc. La opción de archivo --rcfile          forzará a bash a leer y ejecutar comandos desde el archivo en lugar de ~ / .bashrc.

Cuando el terminal inicia bash como shell de inicio de sesión (ejecute w para ver que las instancias bash se ejecutan como -bash ), .bashrc nunca se lee automáticamente.

    
respondido por el nohillside 03.02.2014 - 13:41

Lea otras preguntas en las etiquetas