He utilizado varios sistemas basados en * nix diferentes de los años, y parece que cada versión de Bash que uso tiene un algoritmo diferente para decidir qué scripts de inicio ejecutar. Para fines de tareas como configurar variables de entorno y alias e imprimir mensajes de inicio (por ejemplo, MOTD), ¿qué script de inicio es el lugar apropiado para hacer esto?
¿Cuál es la diferencia entre poner las cosas en .bashrc
, .bash_profile
y .environment
? También he visto otros archivos, como .login
, .bash_login
y .profile
; son estos alguna vez relevantes? ¿Cuáles son las diferencias en las que se ejecutan al iniciar sesión físicamente, iniciar sesión de forma remota a través de ssh y abrir una nueva ventana de terminal? ¿Existen diferencias significativas entre plataformas (incluyendo Mac OS X (y su Terminal.app) y Cygwin Bash)?
fuente
/etc/bashrc
para completar la respuesta?Clásicamente,
~/.profile
es utilizado por Bourne Shell, y probablemente sea compatible con Bash como medida heredada. Nuevamente,~/.login
y~/.cshrc
fueron utilizados por C Shell: no estoy seguro de que Bash los use en absoluto.El
~/.bash_profile
se usaría una vez, al iniciar sesión. El~/.bashrc
script se lee cada vez que se inicia un shell. Esto es análogo a/.cshrc
C Shell.Una consecuencia es que el contenido
~/.bashrc
debe ser lo más liviano (mínimo) posible para reducir la sobrecarga al iniciar un shell sin inicio de sesión.Creo que el
~/.environment
archivo es un archivo de compatibilidad para Korn Shell.fuente
Encontré información sobre .bashrc y .bash_profile aquí para resumirlo:
También hay un seguimiento completo de cada uno de los archivos de configuración aquí.
Probablemente estos dependan incluso de la distribución, no todas las distribuciones eligen tener cada configuración con ellos y algunos tienen aún más. Pero cuando tienen el mismo nombre, generalmente incluyen el mismo contenido.
fuente
Según Josh Staiger , Terminal.app de Mac OS X en realidad ejecuta un shell de inicio de sesión en lugar de un shell sin inicio de sesión de forma predeterminada para cada nueva ventana de terminal, llamando a .bash_profile en lugar de .bashrc.
Él recomienda:
fuente
Un buen lugar para mirar es la página de manual de bash. Aquí hay una versión en línea. Busque la sección "INVOCACIÓN".
fuente
He usado distribuciones de la familia Debian que parecen ejecutarse
.profile
, pero no.bash_profile
, mientras que los derivados RHEL se ejecutan.bash_profile
antes.profile
.Parece ser un desastre cuando tienes que configurar variables de entorno para que funcionen en cualquier sistema operativo Linux.
fuente