Différence entre un shell de connexion et un shell sans connexion

Fumbani Banda 30 janvier 2023
  1. Qu’est-ce qu’un shell dans les systèmes basés sur UNIX
  2. Qu’est-ce qu’un shell de connexion dans les systèmes UNIX
  3. Qu’est-ce qu’un shell sans connexion dans les systèmes UNIX
Différence entre un shell de connexion et un shell sans connexion

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.

  1. Le processus de connexion exécute /etc/profile.
  2. /etc/profile exécute les scripts dans /etc/profile.d
  3. Le processus de connexion exécute ~/.bash_profile.
  4. ~/.bash_profile exécute ~/.bashrc
  5. ~/.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.

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.

  1. Le processus sans connexion exécute ~/.bashrc
  2. ~/.bashrc exécute /etc/bashrc
  3. /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.

shell sans connexion

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

Article connexe - Linux Shell