Diferencia entre un shell de inicio de sesión y un shell sin inicio de sesión
- ¿Qué es un shell en sistemas basados en UNIX?
- ¿Qué es un shell de inicio de sesión en sistemas basados en UNIX?
- ¿Qué es un shell sin inicio de sesión en sistemas basados en UNIX?
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.
- El proceso de inicio de sesión ejecuta
/etc/profile
. /etc/profile
ejecuta los scripts en/etc/profile.d
- El proceso de inicio de sesión ejecuta
~/.bash_profile
. ~/.bash_profile
ejecuta~/.bashrc
~/.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.
¿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.
- El proceso de no inicio de sesión ejecuta
~/.bashrc
~/.bashrc
ejecuta/etc/bashrc
/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.