Entendiendo los archivos de inicialización de shell y los perfiles de usuario en Linux


Linux es un sistema de tiempo compartido de múltiples usuarios, lo que implica que más de un usuario puede iniciar sesión y usar un sistema. Y los administradores de sistemas tienen la tarea de administrar varios aspectos de cómo los diferentes usuarios pueden operar un sistema en términos de instalación/actualización/eliminación de software, programas que pueden ejecutar, archivos que pueden ver/editar, etc.

Linux también permite que los entornos de los usuarios se creen o mantengan de dos formas principales: utilizando configuraciones de todo el sistema (global) y específicas del usuario (personal). Normalmente, el método básico para trabajar con un sistema Linux es el shell, y el shell crea un entorno que depende de ciertos archivos que lee durante su inicialización después de un inicio de sesión exitoso.

En este artículo, explicaremos los archivos de inicialización de shell en relación con los perfiles de usuario para la administración de usuarios locales en Linux. Le haremos saber dónde guardar funciones de shell personalizadas, alias, variables y programas de inicio.

rojo

Si está utilizando un programa diferente de shell (zsh, ash, fish, etc.), lea su documentación para obtener más información sobre algunos de los archivos relacionados de los que hablaremos aquí.

Inicialización de shell en Linux

Cuando se invoca el shell, hay ciertos archivos de inicialización/inicio que lee que ayudan a configurar un entorno para el propio shell y el usuario del sistema; es decir, funciones predefinidas (y personalizadas), variables, alias, etc.

Hay dos categorías de archivos de inicialización que lee el shell:

  • system-wide startup files – theses contain global configurations that apply to all users on the system, and are usually located in the /etc directory. They include: /etc/profiles and /etc/bashrc or /etc/bash.bashrc.
  • user-specific startup files – these store configurations that apply to a single user on the system and are normally located in the users home directory as dot files. They can override the system-wide configurations. They include: .profiles, .bash_profile, .bashrc and .bash_login.

De nuevo, el shell puede invocarse en tres modos posibles:

El shell se invoca después de que un usuario inicie sesión correctamente en el sistema, utilizando /bin/login , después de leer las credenciales almacenadas en el archivo /etc/passwd .

Cuando el shell se inicia como un shell de inicio de sesión interactivo, lee el /etc/profile y su equivalente específico del usuario ~/.bash_profile .

El shell se inicia en la línea de comandos utilizando un programa shell, por ejemplo, $/bin/bash o $/bin/zsh . También se puede iniciar ejecutando el comando /bin/su .

Además, un shell interactivo sin inicio de sesión también puede invocarse con un programa de terminal como konsole , terminator o xterm desde un entorno gráfico.

Cuando el shell se inicia en este estado, copia el entorno del shell primario y lee el archivo ~/.bashrc específico del usuario para obtener instrucciones de configuración de inicio adicionales.

$ su
# ls -la

El shell se invoca cuando se ejecuta un script de shell. En este modo, está procesando un script (conjunto de comandos/funciones de shell o genéricos del sistema) y no requiere la entrada del usuario entre comandos a menos que sea de otra manera. Funciona utilizando el entorno heredado del shell padre.

Entendiendo los archivos de inicio del shell en todo el sistema

En esta sección, daremos más luz a los archivos de inicio de shell que almacenan configuraciones para todos los usuarios en el sistema y estos incluyen:

El /etc/perfil de archivo : almacena configuraciones de entorno de todo el sistema y programas de inicio para la configuración de inicio de sesión. Todas las configuraciones que desee aplicar a todos los entornos de los usuarios del sistema deben agregarse en este archivo.

Por ejemplo, puede configurar su variable de entorno PATH global aquí.

# cat /etc/profile

rojo

El directorio /etc/profile.d/ : almacena los scripts de shell utilizados para realizar cambios personalizados en su entorno:

# cd /etc/profile.d/
# ls  -l 

El archivo /etc/bashrc o /etc/bash.bashrc contiene funciones y alias de todo el sistema, incluidas otras configuraciones que se aplican a todos los usuarios del sistema.

Si su sistema tiene varios tipos de shells, es una buena idea colocar configuraciones específicas de bash en este archivo.

# cat /etc/bashrc

Entendiendo los archivos de inicio de shell específicos del usuario

A continuación, explicaremos más acerca de los archivos de puntos de inicio de shell (bash) específicos del usuario, que almacenan las configuraciones para un usuario particular en el sistema, están ubicados en el directorio de inicio de un usuario e incluyen:

# ls -la

El archivo ~/.bash_profile : esto almacena el entorno específico del usuario y las configuraciones de los programas de inicio. Puede configurar su variable de entorno PATH personalizada aquí, como se muestra en la siguiente captura de pantalla:

# cat ~/.bash_profile

El archivo ~/.bashrc : este archivo almacena alias y funciones específicas del usuario.

# cat ~/.bashrc

El archivo ~/.bash_login : contiene configuraciones específicas que normalmente solo se ejecutan cuando inicia sesión en el sistema. Cuando el ~/.bash_profile está ausente, bash leerá este archivo.

El archivo ~/.profile : este archivo se lee en ausencia de ~/.bash_profile y ~/.bash_login ; puede almacenar las mismas configuraciones, que también pueden ser accesibles por otros shells en el sistema. Como principalmente hemos hablado de bash aquí, tenga en cuenta que otros shells podrían no entender la sintaxis de bash.

A continuación, también explicaremos otros dos archivos importantes importantes para el usuario que no son necesariamente archivos de inicialización de bash:

El archivo ~/.bash_history - bash mantiene un historial de comandos que un usuario ha ingresado en el sistema. Esta lista de comandos se guarda en el directorio de inicio de un usuario en el archivo ~/.bash_history .

Para ver esta lista, escriba:

$ history 
or 
$ history | less

El archivo ~/.bash_logout : no se usa para el inicio de shell, pero almacena instrucciones específicas del usuario para el procedimiento de cierre de sesión. Se lee y ejecuta cuando un usuario sale de un shell de inicio de sesión interactivo.

Un ejemplo práctico sería limpiar la ventana del terminal al cerrar la sesión. Esto es importante para las conexiones remotas, que dejarán una ventana limpia después de cerrarlas:

# cat bash_logout 

Para obtener información adicional, consulte el contenido de estos archivos de inicialización de shell en varias distribuciones de Linux y también lea la página de manual de bash:

¡Eso es todo por ahora! En este artículo, explicamos los archivos de inicio/inicialización de shell en Linux. Utilice el formulario de comentarios a continuación para escribirnos.