99 votos

¿Por qué no Mac OS X source ~/.bashrc?

He encontrado un montón de personas que averiguar por qué la instrucción similar a este :

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

no trabajo.

Resulta siempre que Mac OS X bash archivos de inicio (o Mac Bash sí mismo) no source ~/.bashrc archivo, ya sea en el shell de inicio de sesión, o en un shell generado a partir de la ventana de sistema - como la aplicación Terminal en Mac OS X)

¿Por qué es esto, cuando todos los otros sistemas similares a Unix con Bash he trabajado con antes de haber hecho esto?

PS:

He encontrado lo Bash sí mismo dice acerca de los archivos de inicio (que podría ser útil) :

Cuando Bash se invoca como un proceso interactivo shell de inicio de sesión, o como un no-shell interactivo con la opción --opción de inicio de sesión, primero lee y ejecuta los comandos desde el archivo /etc/profile, si ese archivo existe. Después de leer el archivo, busca en ~/.bash_profile, ~/.bash_login, y ~/.de perfil, en ese orden, y lee y ejecuta los comandos de la primera, que existe y es legible. El --noprofile opción puede se utiliza cuando la cáscara se comenzó a inhibir este comportamiento.

Fuente : http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files

93voto

yoliho Puntos 340

En OSX el terminal se inicia por defecto el inicio de la sesión por lo lee .bash_profile etc. (El proceso de inicio de sesión no utilizar secuencias de comandos y comienza shell no todo se hace de launchd y el área de trabajo)

En otros sistemas unix xterm se ejecuta un shell de inicio de sesión no por defecto, de manera que leen .bashrc como las secuencias de comandos que se presentan con su contraseña, etc en el inicio de sesión de llamada de la sesión de inicio de sesión y todos los terminales son sub proceso de este y heredar la deberá medio ambiente.

A partir de la GNU documento que se refiere a

Invoca como un proceso interactivo no-shell de inicio de sesión

Cuando un shell interactivo que no es un shell de inicio de sesión se inicia, Bash lee y ejecuta órdenes desde ~/.bashrc, si ese archivo existe. Este puede ser inhibida mediante la --norc opción. El --rcfile opción de archivo será la fuerza de Bash para leer y ejecutar comandos desde un archivo, en lugar de ~/.bashrc.

Así que, normalmente, su ~/.bash_profile contiene la línea

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

después (o antes) cualquier inicio de sesión específica de las inicializaciones.

19voto

bash sólo lee .bashrc de no-inicio de sesión de conchas:

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

Como Terminal comienza bash como un shell de inicio de sesión (ejecutar w a ver que el bash de los casos están ejecutado como -bash), .bashrc nunca es leído automáticamente.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X