Un shell est une couche importante de l'architecture Linux. Shell est une interface qui reçoit les entrées des utilisateurs et envoie des instructions au noyau, prend également la sortie du noyau et renvoie le résultat au shell de sortie.
Dans ce didacticiel, nous utilisons le shell Bash pour les exemples. Fondamentalement, un shell est de deux types, Login Shell et Non Login Shell . Chaque shell exécute un ensemble de scripts prédéfinis pour configurer les environnements shell.
Interface de connexion
Un shell de connexion est créé après une connexion réussie de l'utilisateur. Par exemple, lorsque vous vous connectez à un système Linux via un terminal, SSH ou que vous passez à l'utilisateur avec la commande "su -".
Lorsqu'un shell de connexion démarre, il exécute un ensemble de scripts prédéfinis pour configurer l'environnement du shell. Pour identifier le shell de connexion, exécutez la commande ci-dessous sur le terminal.
echo $0
Si vous obtenez le résultat comme "-bash" ou "-su" signifie, vous êtes sur le shell de connexion. Assurez-vous qu'il a un trait d'union (-) comme préfixe.
Un shell de connexion exécute les scripts suivants :
- Le shell de connexion exécute /etc/profile
- /etc/profile exécute tous les scripts dans /etc/profile.d/
- Ensuite, exécute les utilisateurs ~/.bash_profile
- ~/.bash_profile exécute les utilisateurs ~/.bashrc
- ~/.bashrc exécute /etc/bashrc
Shell sans connexion
Non Login Shell est le shell qui est lancé par le shell de connexion. Par exemple, un shell que vous avez démarré à partir d'un autre shell ou lancé par un programme, etc.
Un shell sans connexion exécute le script suivant pour définir l'environnement du shell.
- Le shell sans connexion exécute d'abord ~/.bashrc
- Puis ~/.bashrc exécute /etc/bashrc
- /etc/bashrc appelle les scripts dans /etc/profile.d
Vérifiez la connexion par rapport au shell sans connexion
Pour trouver le shell actuel, il s'agit d'un shell de connexion ou d'un shell non connecté, exécutez simplement la commande ci-dessous. Voir les résultats et trouver les différences entre eux.
echo $0
La sortie du shell de connexion sera -bash ou -su .
La sortie du shell sans connexion sera bash ou su