Pregunta ¿Cuáles son las diferencias funcionales entre .profile .bash_profile y .bashrc


¿Cuáles son las diferencias funcionales entre los .profile, .bash_profile y .bashrc archivos?


119
2018-04-20 15:42


origen




Respuestas:


.bash_profile y .bashrc son específicos para bash, mientras que .profile es leído por muchos shells en ausencia de sus propios archivos de configuración específicos del shell. (.profile fue utilizado por el shell original de Bourne.) .bash_profile o .profile es leído por shells de inicio de sesión, junto con .bashrc; subshells de solo lectura .bashrc. (Entre el control de trabajos y los modernos sistemas de ventanas, .bashrc por sí solo no se acostumbra mucho. Si utiliza screen o tmux, las pantallas / ventanas normalmente ejecutan subshells en lugar de shells de inicio de sesión.)

La idea detrás de esto fue que la configuración de una sola vez fue hecha por .profile (o versión específica del shell), y cosas por shell por .bashrc. Por ejemplo, generalmente solo desea cargar las variables de entorno una vez por sesión en lugar de golpearlas cada vez que inicie una subshell dentro de una sesión, mientras que siempre desea tener sus alias (que no se propagan automáticamente como lo son las variables de entorno).

Otros archivos de configuración de shell notables:

/etc/bash_profile (retroceder /etc/profile) se lee antes que el usuario .profile para la configuración de todo el sistema, y ​​lo mismo /etc/bashrc en subshells (no hay respaldo para éste). Muchos sistemas incluyendo Ubuntu también usan un /etc/profile.d directorio que contiene scriptlets de shell, que son . (source) -ed de /etc/profile; Los fragmentos aquí son por concha, con *.sh se aplica a todos los shells compatibles con Bourne / POSIX y otras extensiones que se aplican a ese shell en particular.


101
2018-04-20 15:51





.perfil

.profile es para cosas que no están específicamente relacionadas con Bash, como variables de entorno PATH y amigos, y debe 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 la configuración del uso de Bash interactivo, como Bash aliasesconfigurando tu favorito editor, configurando el Bash prompt, etc.


.bash_profile

.bash_profile es para asegurarse de que tanto las cosas en .profile y .bashrc se cargan para login shells.

Por ejemplo, .bash_profile podría ser algo tan simple como

. ~/.profile
. ~/.bashrc

Si fueras a omitir .bash_profile, solamente .profile sería cargado.


31
2018-04-17 06:15



Esto respondió mi pregunta para Mac OS X - Jake Toronto


De acuerdo con 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 de sesión o no de inicio de sesión?

Cuando inicia sesión (escriba 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 indicador de comandos 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 indicador de comandos de la ventana. .bashrc también se ejecuta cuando inicia una nueva instancia de bash escribiendo / bin / bash en un terminal.

Una excepción a las pautas de la ventana del terminal es Terminal.app de Mac OS X, que ejecuta un shell de inicio de sesión por defecto para cada nueva ventana del terminal, llamando a .bash_profile en lugar de .bashrc. Otros emuladores de terminal GUI pueden hacer lo mismo, pero la mayoría tiende a no hacerlo.

Más aquí http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html


21
2018-04-03 12:52