¿Cuáles son las diferencias funcionales entre el .profile
, .bash_profile
y .bashrc
archivos?
¿Cuáles son las diferencias funcionales entre el .profile
, .bash_profile
y .bashrc
archivos?
Respuestas:
.bash_profile
y .bashrc
son específicos de bash
, mientras que .profile
muchos shells leen 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
se lee mediante shells de inicio de sesión, junto con .bashrc
; subcapas de solo lectura .bashrc
. (Entre el control del trabajo y los sistemas modernos de ventanas, .bashrc
por sí solo no se usa mucho. Si usa screen
o tmux
, las pantallas / ventanas generalmente ejecutan subshells en lugar de shells de inicio de sesión).
La idea detrás de esto era que la configuración de una sola vez se realizaba por .profile
(o la versión específica del shell del mismo), y las cosas por shell por .bashrc
. Por ejemplo, por lo general, solo desea cargar variables de entorno una vez por sesión en lugar de eliminarlas cada vez que inicia una 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 notables:
/etc/bash_profile
(respaldo /etc/profile
) se lee antes del usuario .profile
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
) editados desde /etc/profile
; los fragmentos aquí son por shell, y se *.sh
aplican a todos los shells compatibles con Bourne / POSIX y otras extensiones que se aplican a ese shell en particular.
.perfil
.profile
es para cosas que no están específicamente relacionadas Bash
, como variables de entorno PATH
y amigos, y deberían estar disponibles en cualquier momento.
Por ejemplo, .profile
también debe cargarse al iniciar una sesión de escritorio gráfica.
.bashrc
.bashrc
es para configurar el uso interactivo de Bash, como Bash aliases
configurar su favorito editor
, configurar el Bash prompt
, etc.
.bash_profile
.bash_profile es para asegurarse de que se carguen tanto los elementos .profile
como los contenidos ..bashrc
login shells
Por ejemplo, .bash_profile
podría ser algo simple como
. ~/.profile
. ~/.bashrc
Si tuviera que omitir .bashrc
, solo .profile
se cargaría.
Según la página de manual 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 o no inicio de sesión?
Cuando inicia sesión (escriba nombre de usuario y 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 ha iniciado sesión en su máquina y abre 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
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 en .bash_profile
lugar de .bashrc
. Otros emuladores de terminal GUI pueden hacer lo mismo, pero la mayoría tienden a no hacerlo.
Más aquí .