Diferencia entre un shell de inicio de sesión y un shell sin inicio de sesión

Fumbani Banda 30 enero 2023
  1. ¿Qué es un shell en sistemas basados ​​en UNIX?
  2. ¿Qué es un shell de inicio de sesión en sistemas basados ​​en UNIX?
  3. ¿Qué es un shell sin inicio de sesión en sistemas basados ​​en UNIX?
Diferencia entre un shell de inicio de sesión y un shell sin inicio de sesión

Este tutorial explica la diferencia entre un shell de inicio de sesión y un shell sin inicio de sesión en sistemas basados ​​en UNIX.

¿Qué es un shell en sistemas basados ​​en UNIX?

Un shell en los sistemas basados ​​en UNIX es una interfaz entre el usuario y el núcleo del sistema operativo. Toma información del usuario y la envía al kernel, y también toma el resultado del kernel al usuario.

Hay dos tipos de shells, el shell de inicio de sesión y el shell de no inicio de sesión.

Cada shell ejecuta una serie de scripts de inicio para configurar el entorno una vez que se inicia. Los guiones tienen diferentes usos y todos afectan el medio ambiente.

Las secuencias de comandos posteriores pueden anular los valores que han configurado las secuencias de comandos anteriores.

¿Qué es un shell de inicio de sesión en sistemas basados ​​en UNIX?

Un shell de inicio de sesión es el primer proceso que se inicia después de iniciar sesión con éxito usando /bin/login leyendo el archivo /etc/passwd. El shell de inicio de sesión se ejecuta bajo su ID de usuario.

Se ejecuta un shell de inicio de sesión cuando inicia sesión con el terminal, cambia a otro usuario o usa SSH.

Una vez que se inicia un shell de inicio de sesión, ejecuta una colección de scripts de inicio para configurar el entorno de shell. Se ejecutan los siguientes scripts.

  1. El proceso de inicio de sesión ejecuta /etc/profile.
  2. /etc/profile ejecuta los scripts en /etc/profile.d
  3. El proceso de inicio de sesión ejecuta ~/.bash_profile.
  4. ~/.bash_profile ejecuta ~/.bashrc
  5. ~/.bashrc ejecuta /etc/bashrc

El siguiente comando se usa para indicar si el shell es un shell de inicio de sesión o no.

echo  $0

Obtener -bash o -su como salida indica que el shell es un shell de inicio de sesión. Tome nota del símbolo - que precede a la salida.

En la imagen de abajo, la salida del comando echo $0 tiene un - precediendo al bash. Muestra que el shell es un shell de inicio de sesión.

shell de inicio de sesión

¿Qué es un shell sin inicio de sesión en sistemas basados ​​en UNIX?

El shell de inicio de sesión inicia un shell que no es de inicio de sesión. Puede ser un shell que comience con un proceso sin inicio de sesión o que comience desde otro shell. Un proceso usa el nombre del ejecutable de shell para iniciar un shell sin inicio de sesión.

Ejecutar el shell bash como un shell sin inicio de sesión ejecuta los siguientes scripts.

  1. El proceso de no inicio de sesión ejecuta ~/.bashrc
  2. ~/.bashrc ejecuta /etc/bashrc
  3. /etc/bashrc ejecuta /etc/profile.d/

Para determinar si un shell es un shell sin inicio de sesión o no, ejecute el siguiente comando.

echo $0

Si la salida es bash o su sin un símbolo - precedente, el shell no es un shell de inicio de sesión.

Ejecutamos el comando echo $0 en la imagen de abajo, y la salida muestra un - precediendo al bash. Significa que estamos usando un shell de inicio de sesión.

Para iniciar un shell sin inicio de sesión, escribimos el nombre del ejecutable del shell, bash, en nuestro caso. Ejecutamos de nuevo el comando echo $0 para ver qué tipo de shell es el shell recién iniciado; la salida del comando echo es bash sin el -. Significa que el nuevo shell es un shell sin inicio de sesión.

shell sin inicio de sesión

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Artículo relacionado - Linux Shell