Différence entre un shell de connexion et un shell sans connexion
- Qu’est-ce qu’un shell dans les systèmes basés sur UNIX
- Qu’est-ce qu’un shell de connexion dans les systèmes UNIX
- Qu’est-ce qu’un shell sans connexion dans les systèmes UNIX
Ce didacticiel explique la différence entre un shell de connexion et un shell sans connexion dans les systèmes UNIX.
Qu’est-ce qu’un shell dans les systèmes basés sur UNIX
Un shell dans les systèmes basés sur UNIX est une interface entre l’utilisateur et le noyau du système d’exploitation. Il prend l’entrée de l’utilisateur et l’envoie au noyau, et il prend également le résultat du noyau à l’utilisateur.
Il existe deux types de shells, le shell de connexion et le shell sans connexion.
Chaque shell exécute une série de scripts de démarrage pour configurer l’environnement une fois qu’il est démarré. Les scripts ont des utilisations différentes, et ils affectent tous l’environnement.
Les scripts suivants peuvent remplacer les valeurs définies par les scripts précédents.
Qu’est-ce qu’un shell de connexion dans les systèmes UNIX
Un shell de connexion est le premier processus démarré après une connexion réussie à l’aide de /bin/login
en lisant le fichier /etc/passwd
. Le shell de connexion s’exécute sous votre ID utilisateur.
Un shell de connexion est exécuté lorsque vous vous connectez à l’aide du terminal, passez à un autre utilisateur ou utilisez SSH.
Une fois qu’un shell de connexion est démarré, il exécute une collection de scripts de démarrage pour configurer l’environnement du shell. Les scripts suivants sont exécutés.
- Le processus de connexion exécute
/etc/profile
. /etc/profile
exécute les scripts dans/etc/profile.d
- Le processus de connexion exécute
~/.bash_profile
. ~/.bash_profile
exécute~/.bashrc
~/.bashrc
exécute/etc/bashrc
La commande suivante est utilisée pour indiquer si le shell est un shell de connexion ou non.
echo $0
Obtenir -bash
ou -su
comme sortie indique que le shell est un shell de connexion. Prenez note du symbole -
précédant la sortie.
Dans l’image ci-dessous, la sortie de la commande echo $0
a un -
précédant le bash
. Cela montre que le shell est un shell de connexion.
Qu’est-ce qu’un shell sans connexion dans les systèmes UNIX
Le shell de connexion démarre un shell sans connexion. Il peut s’agir d’un shell qui démarre avec un processus sans connexion ou démarre à partir d’un autre shell. Un processus utilise le nom de l’exécutable du shell pour démarrer un shell sans connexion.
L’exécution du shell bash en tant que shell sans connexion exécute les scripts suivants.
- Le processus sans connexion exécute
~/.bashrc
~/.bashrc
exécute/etc/bashrc
/etc/bashrc
exécute/etc/profile.d/
Pour déterminer si un shell est un shell sans connexion ou non, exécutez la commande suivante.
echo $0
Si la sortie est bash
ou su
sans le symbole -
précédent, le shell est un shell sans connexion.
Nous exécutons la commande echo $0
dans l’image ci-dessous, et la sortie affiche un -
précédant le bash
. Cela signifie que nous utilisons un shell de connexion.
Pour démarrer un shell sans connexion, nous tapons le nom de l’exécutable du shell, bash
, dans notre cas. Nous exécutons à nouveau la commande echo $0
pour voir de quel type de shell il s’agit ; la sortie de la commande echo
est bash
sans le -
. Cela signifie que le nouveau shell est un shell sans connexion.