GNU/Linux >> Tutoriales Linux >  >> Linux

.bashrc frente a .bash_profile

Si pasa mucho tiempo en la línea de comandos, es probable que desee personalizar su entorno de shell. Esto puede significar crear alias, agregar un nuevo directorio a $PATH , o cambiar el aspecto del indicador de shell.

Es posible que haya encontrado algunos tutoriales en los que dicen que coloque su configuración en .bashrc , .bash_profile u otro archivo de configuración que lee y ejecuta bash shell.

En este artículo, hablaremos sobre los archivos de inicio de Bash y la diferencia entre .bashrc y .bash_profile archivos.

Inicio de sesión interactivo y Shell de no inicio de sesión #

Cuando se invoca, Bash lee y ejecuta comandos desde un conjunto de archivos de inicio. Los archivos que se leen dependen de si el shell se invoca como un shell interactivo de inicio de sesión o de no inicio de sesión.

Un shell puede ser interactivo o no interactivo.

En términos simples, un shell interactivo es un shell que lee y escribe en la terminal de un usuario, mientras que un shell no interactivo es un shell que no está asociado con una terminal, como cuando se ejecuta un script.

Un shell interactivo puede ser un shell de inicio de sesión o de no inicio de sesión.

Se invoca un shell de inicio de sesión cuando un usuario inicia sesión en el terminal, ya sea de forma remota a través de ssh o localmente, o cuando Bash se inicia con --login opción. Se invoca un shell interactivo sin inicio de sesión desde el shell de inicio de sesión, como cuando se escribe bash en el indicador de shell o al abrir una nueva pestaña de terminal de Gnome.

Archivos de inicio de Bash #

Cuando se invoca como un shell de inicio de sesión interactivo, Bash busca el /etc/profile y, si el archivo existe, ejecuta los comandos enumerados en el archivo. Luego Bash busca ~/.bash_profile , ~/.bash_login y ~/.profile archivos, en el orden indicado, y ejecuta comandos desde el primer archivo legible encontrado.

Cuando se invoca a Bash como un shell interactivo sin inicio de sesión, lee y ejecuta comandos desde ~/.bashrc , si ese archivo existe y es legible.

Diferencia entre .bashrc y .bash_profile #

.bash_profile se lee y ejecuta cuando se invoca Bash como un shell de inicio de sesión interactivo, mientras que .bashrc se ejecuta para un shell interactivo sin inicio de sesión.

Usa .bash_profile para ejecutar comandos que deberían ejecutarse solo una vez, como personalizar el $PATH variable de entorno.

Coloque los comandos que deben ejecutarse cada vez que inicie un nuevo shell en .bashrc expediente. Esto incluye sus alias y funciones, indicaciones personalizadas, personalizaciones de historial, etc.

Normalmente, ~/.bash_profile contiene líneas como las siguientes que generan el .bashrc expediente. Esto significa que cada vez que inicia sesión en la terminal, ambos archivos se leen y ejecutan.

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

La mayoría de las distribuciones de Linux usan ~/.profile en lugar de ~/.bash_profile . El ~/.profile todos los shells leen el archivo, mientras que ~/.bash_profile solo por Bash.

Si algún archivo de inicio no está presente en su sistema, puede crearlo.

Conclusión #

.bash_profile y .bashrc son archivos que contienen comandos de shell que se ejecutan cuando se invoca Bash. .bash_profile se lee y ejecuta en shells de inicio de sesión interactivos, mientras que .bashrc en shells que no son de inicio de sesión.

Consulte el manual de Bash para obtener más información sobre los archivos de inicio de Bash.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.


Linux
  1. ¿El propósito de .bashrc y cómo funciona?

  2. ¿Funciones en variables de Shell?

  3. Que hace . ~/.bashrc Comando Hacer??

  4. ¿Regenerar .bashrc desde Shell actual?

  5. [ :Operador inesperado en programación shell

Shell Scripting Parte V:Funciones en Bash

Cómo instalar Linux Bash Shell en Windows 10

Instalación de Fish Shell en Ubuntu en Windows 10

Ejecute todos los scripts de shell en la carpeta

Cómo:¿Historial ilimitado de Bash/shell?

SSH sin abastecimiento .bashrc