Solución 1:
.bash_profile
y .bashrc
son específicos de bash
, mientras que .profile
es leído por muchos shells en ausencia de sus propios archivos de configuración específicos de shell. (.profile
fue utilizado por el shell Bourne original.) .bash_profile
o .profile
es leído por shells de inicio de sesión, junto con .bashrc
; subcapas de solo lectura .bashrc
. (Entre el control de trabajos y los modernos sistemas de ventanas, .bashrc
por sí solo no se usa mucho. Si usa screen
o tmux
, las pantallas/ventanas normalmente ejecutan subcapas en lugar de capas de inicio de sesión).
La idea detrás de esto era que .profile
realizara una configuración única (o versión específica de shell del mismo), y cosas por shell por .bashrc
. Por ejemplo, por lo general, solo desea cargar las variables de entorno una vez por sesión en lugar de eliminarlas cada vez que inicia un subshell dentro de una sesión, mientras que siempre desea sus alias (que no se propagan automáticamente como lo hacen las variables de entorno).
Otros archivos de configuración de shell destacados:
/etc/bash_profile
(alternativo /etc/profile
) se lee antes del .profile
del usuario para la configuración de todo el sistema, y también /etc/bashrc
en subcapas (no hay respaldo para este). Muchos sistemas, incluido Ubuntu, también usan un /etc/profile.d
directorio que contiene scriptlets de shell, que son .
(source
)-ed desde /etc/profile
; los fragmentos aquí son por shell, con *.sh
se aplica a todos los shells compatibles con Bourne/POSIX y otras extensiones que se aplican a ese shell en particular.
Solución 2:
.perfil
.profile
es para cosas que no están específicamente relacionadas con Bash
, como variables de entorno PATH
y amigos, y debería estar disponible en cualquier momento.
Por ejemplo, .profile
también debe cargarse al iniciar una sesión de escritorio gráfico.
.bashrc
.bashrc
es para configurar el uso interactivo de Bash, como Bash aliases
, configurando tu editor
favorito , configurando el Bash prompt
, etc.
.bash_perfil
.bash_profile es para asegurarse de que ambas cosas en .profile
y .bashrc
se cargan para login shells
.
Por ejemplo, .bash_profile
podría ser algo simple como
. ~/.profile
. ~/.bashrc
Si tuviera que omitir .bashrc
, solo .profile
se cargaría.
Solución 3:
Según la página man de bash, .bash_profile
se ejecuta para shells de inicio de sesión, mientras que .bashrc
se ejecuta para shells interactivos sin inicio de sesión.
Entonces, ¿qué es un shell de inicio de sesión o de no inicio de sesión?
Cuando inicie sesión (ingrese el nombre de usuario y la 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 inició sesión en su máquina y abrió una nueva ventana de terminal (xterm) dentro de Gnome o KDE, entonces .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
en una terminal.
Una excepción a las pautas de la ventana de terminal es Terminal.app de Mac OS X, que ejecuta un shell de inicio de sesión de forma predeterminada para cada nueva ventana de terminal, llamando a .bash_profile
en lugar de .bashrc
. Otros emuladores de terminales GUI pueden hacer lo mismo, pero la mayoría tiende a no hacerlo.
Más aquí.