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

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

Linux es un sistema de tiempo compartido multiusuario, lo que implica que más de un usuario puede iniciar sesión y utilizar un sistema. Y los administradores del sistema 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 (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 en función de ciertos archivos que lee durante su inicialización después de un inicio de sesión de usuario exitoso.

Lectura sugerida: Cómo establecer 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 gestión de usuarios locales en Linux. Le haremos saber dónde guardar las funciones de shell personalizadas, los alias, las variables y los programas de inicio.

Importante. para este propósito artículo, nos centraremos en bash. un shell compatible sh. que es el shell más popular/utilizado en los sistemas Linux.

Si está utilizando un programa de 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

freestar.config.enabled_slots.push

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

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

  • sistema-archivos de inicio amplios. las tesis 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 tienda que se aplican a un solo usuario en el sistema y normalmente se encuentran en el directorio de inicio de los usuarios como archivos dot. Pueden anular las configuraciones de todo el sistema. Incluyen: .profiles. .bash_profile. .bashrc. y .bash_login.

Una vez más, el shell se puede invocar en tres modos posibles:

1. Shell de inicio de sesión interactivo

El shell se invoca después de que un usuario inicie sesión con éxito 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 /etc/profile. y su equivalente ~/.bash_profile. específico del usuario.

Shell de inicio de sesión interactivo de Linux  Shell de inicio de sesión interactivo de Linux Shell de inicio de sesión interactivo de Linux 2. Shell interactivo sin inicio de sesión

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

Además, un shell interactivo que no sea de inicio de sesión también se puede invocar con un programa de terminal como konsole. terminator o xterm desde dentro de un entorno gráfico.

Cuando el shell se inicia en este estado, copia el entorno del shell padre y lee el ~/.bashrc. para obtener instrucciones de configuración de inicio adicionales.

$ su # ls-la  Sin inicio de sesión interactivo Shell  Shell interactivo sin inicio de sesión Shell interactivo sin inicio de sesión 3. Shell no interactivo

Se invoca el shell cuando se está ejecutando un script de shell. En este modo, está procesando una secuencia de comandos (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. Opera usando el entorno heredado del shell padre.

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

En esta sección, mostraremos más luz sobre los archivos de inicio del shell que almacenan configuraciones para todos usuarios en el 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 establecer su variable de entorno PATH global aquí.

# cat/etc/perfil  Archivo de configuración de todo el sistema  Archivo de configuración de todo el sistema Archivo de configuración de todo el sistema

Nota. En ciertos sistemas como RHEL/CentOS 7. recibirán advertencias como “No se recomienda cambiar este archivo a menos que sepa lo que está 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 actualizaciones futuras ”.

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

# cd/etc/profile .d/# ls-l  Almacena Shell personalizado Secuencias de comandos  Almacena scripts de shell personalizados Almacena scripts de shell personalizados

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

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

# cat/etc/bashrc  Funciones y alias de todo el sistema  Funciones y alias de todo el sistema Alias ​​y funciones de todo el sistema

Comprensión de los archivos de inicio de shell específicos del usuario

A continuación, explicaremos más sobre los archivos de punto 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  Archivos de configuración específicos del usuario  Archivos de configuración específicos del usuario Archivos de configuración específicos del usuario

El ~/.bash_profile. archivo: 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 captura de pantalla a continuación:

# cat ~/.bash_profile  User Bash Perfil  User Bash Profile User Bash Profile

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

# cat ~/.bashrc  Archivo Bashrc de usuario  Archivo Bashrc de usuario Archivo Bashrc de usuario

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 la 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 otros shells podrían no entender 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 han sido ingresados ​​por un usuario en el sistema. Esta lista de comandos se guarda en el directorio de inicio del usuario en el archivo ~/.bash_history.

Para ver esta lista, escriba:

$ history o $ history | menos  Ver los últimos comandos ejecutados  Ver los últimos comandos ejecutados Ver los últimos comandos ejecutados

El archivo ~/.bash_logout. no se usa para el inicio del shell, pero almacena instrucciones específicas del usuario para el procedimiento de cierre de sesión. Se lee y se 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 la sesión. Esto es importante para las conexiones remotas, que dejarán una ventana limpia después de cerrarlas:

# cat bash_logout Borrar historial después de cerrar sesión Borrar historial después de cerrar sesión Borrar historial después de cerrar sesión

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 respondernos.