Búsqueda de sitios web

Comprensión de los archivos de inicialización de Shell y los perfiles de usuario en Linux


Linux es un sistema multiusuario de tiempo compartido, lo que implica que más de un usuario puede iniciar sesión y utilizar un sistema. Y los administradores de sistemas tienen la tarea de gestionar 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 crear o mantener los entornos de los usuarios de dos maneras principales: utilizando configuraciones para todo el sistema (globales) y específicas del usuario (personales). Normalmente, el método básico para trabajar con un sistema Linux es el shell, y el shell crea un entorno dependiendo de ciertos archivos que lee durante su inicialización después de un inicio de sesión exitoso del usuario.

Lectura sugerida: Cómo configurar variables de entorno en Linux

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 local en Linux. Le informaremos dónde guardar funciones de shell personalizadas, alias, variables y programas de inicio.

Importante: a los efectos de este artículo, nos centraremos en bash, un shell compatible con sh que es el shell más popular/usado en sistemas Linux que existe.

Si está utilizando un programa Shell diferente (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, lee ciertos archivos de inicialización/inicio que ayudan a configurar un entorno para el propio shell y el usuario del sistema; es decir, funciones, variables, alias, etc. predefinidos (y personalizados).

Hay dos categorías de archivos de inicialización leídos por el shell:

  • archivos de inicio de todo el sistema: contienen configuraciones globales que se aplican a todos los usuarios del sistema y, por lo general, se encuentran en el directorio /etc. Incluyen: /etc/profiles y /etc/bashrc o /etc/bash.bashrc.
  • archivos de inicio específicos del usuario: estas configuraciones de almacenamiento se aplican a un único usuario en el sistema y normalmente se encuentran en el directorio de inicio de los usuarios como archivos punto. Pueden anular las configuraciones de todo el sistema. Incluyen: .profiles, .bash_profile, .bashrc y .bash_login.

Nuevamente, el shell se puede invocar de tres modos posibles:

1. Shell de inicio de sesión interactivo

El shell se invoca después de que un usuario inicia sesión exitosamente en el sistema, usando /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 /etc/profile y su equivalente específico del usuario ~/.bash_profile.

2. Shell interactivo sin inicio de sesión

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

Además, también se puede invocar un shell interactivo sin inicio de sesión 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 principal y lee el archivo ~/.bashrc específico del usuario para obtener instrucciones de configuración de inicio adicionales.

su
ls -la

3. Shell no interactivo

El shell se invoca cuando se ejecuta un script de shell. En este modo, procesa un script (un conjunto de comandos/funciones genéricas o de shell del sistema) y no requiere entrada del usuario entre comandos a menos que se indique lo contrario. Opera utilizando el entorno heredado del shell principal.

Comprensión de los archivos de inicio del Shell en todo el sistema

En esta sección, arrojaremos más luz sobre los archivos de inicio del shell que almacenan configuraciones para todos los usuarios del sistema y estos incluyen:

El archivo/etc/profile: 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 los entornos de todos los usuarios del sistema deben agregarse en este archivo.

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

cat /etc/profile

Nota: en ciertos sistemas como RHEL/CentOS 7, recibirá advertencias como "No se recomienda cambiar este archivo a menos que saber lo que estás haciendo. Es mucho mejor crear un script de shell .sh personalizado en /etc/profile.d/ para realizar cambios personalizados en su entorno, ya que esto evitará la necesidad de fusionar futuras actualizaciones”.

El directorio /etc/profile.d/ almacena 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 para 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 incluir configuraciones específicas de bash en este archivo.

cat /etc/bashrc

Comprender los archivos de inicio de Shell específicos del usuario

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

ls -la

El archivo ~/.bash_profile: 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 inicias sesión en el sistema. Cuando ~/.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, a las que también pueden acceder otros shells del sistema. Debido a que aquí hemos hablado principalmente de bash, tenga en cuenta que es posible que otros shells no comprendan la sintaxis de bash.

A continuación, también explicaremos otros dos archivos importantes específicos del usuario que no son necesariamente archivos de inicialización de bash:

El archivo ~/.bash_history – bash mantiene un historial de comandos que ha ingresado un usuario 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 utiliza para el inicio del 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 borrar la ventana del terminal al cerrar sesión. Esto es importante para 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 lea también la página de manual de bash:

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