Un shell es una capa importante de la arquitectura de Linux. Shell es una interfaz que toma información de los usuarios y envía instrucciones al Kernel. También toma la salida del Kernel y envía el resultado de vuelta al shell de salida.
En este tutorial, usamos Bash shell para los ejemplos. Básicamente, un shell es de dos tipos, Shell de inicio de sesión y Shell sin inicio de sesión . Cada shell ejecuta algún conjunto de scripts predefinidos para configurar entornos de shell.
Concha de inicio de sesión
Se crea un shell de inicio de sesión después de un inicio de sesión exitoso del usuario. Por ejemplo, cuando inicia sesión en un sistema Linux a través de terminal, SSH o cambia a usuario con el comando "su -".
Cuando se inicia un shell de inicio de sesión, ejecuta un conjunto de secuencias de comandos predefinidas para configurar el entorno del shell. Para identificar el shell de inicio de sesión, ejecute el siguiente comando en la terminal.
echo $0
Si obtiene un resultado como "-bash" o "-su", significa que está en el shell de inicio de sesión. Asegúrate de que tenga un guión (-) como prefijo.
Un inicio de sesión ejecuta los siguientes scripts:
- El shell de inicio de sesión ejecuta /etc/profile
- /etc/profile ejecuta todos los scripts en /etc/profile.d/
- Luego ejecuta usuarios ~/.bash_profile
- ~/.bash_profile ejecuta usuarios ~/.bashrc
- ~/.bashrc ejecuta /etc/bashrc
Shell sin inicio de sesión
Non Login Shell es el shell, que es iniciado por el shell de inicio de sesión. Por ejemplo, un shell que inició desde otro shell o iniciado por un programa, etc.
Un shell sin inicio de sesión ejecuta el siguiente script para configurar el entorno del shell.
- El shell sin inicio de sesión primero ejecuta ~/.bashrc
- Entonces ~/.bashrc ejecuta /etc/bashrc
- /etc/bashrc llama a los scripts en /etc/profile.d
Comprobar shell de inicio de sesión frente a no inicio de sesión
Para encontrar el shell actual, es el shell de inicio de sesión o el shell sin inicio de sesión, simplemente ejecute el siguiente comando. Vea los resultados y encuentre las diferencias entre ellos.
echo $0
La salida del shell de inicio de sesión será -bash o -su .
La salida de shell sin inicio de sesión será bash o su