LinuxInfo
Dezoom

Session shell

Mise à jour : Debian 9.1

Le shell est le programme qui lit, interprète et exécute les commandes lues depuis un terminal ou un fichier et permet d'interagir avec l'ordinateur. Plusieurs shells peuvent être ouverts simultanément, de façon parallèle ou imbriquée, par un ou plusieurs utilisateurs.

Ce document décrit le déroulement d'une session shell interactive.

Terminologie :

1 - Démarrage

1.1 - Principe

Le démarrage d'un shell interactif s'effectue

La méthode de lancement du shell va jouer sur la définition de l'environnement  :

1.2 - Démarrage en lançant un terminal

alt Ctrl Fn
Un shell  de connexion s'ouvre. 
Un shell "non connexion" s'ouvre. 

Pour plus de détails sur l'ouverture d'un terminal voir : Terminal

1.3 - Démarrage d'un shell fils avec bash

$ bash -l
Mot de passe :
$ bash

1.4 - Démarrage d'un shell fils avec su

su démarre un nouveau shell, comme bash, mais permet de changer d'utilisateur. Dans le cas du super-utilisateur, le nom (root) peut être omis dans la commande.

$ su -l nom_utilisateur
Mot de passe :
$ su nom_utilisateur
Mot de passe :

Note : Dans ce dernier cas, il s'agit bien d'un shell "non connexion", la saisie du nom d'utilisateur et du mot de passe appartiennent à la commande su et non à bash.

2 - Propriétés du shell courant

2.1 - Identifiants de processus

Les commandes suivantes permettent d'afficher le pid du shell et les shells ouvert dans la session :

$ echo Bash_pid=$BASHPID
Bash_pid=2716
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 2698 2693 0 80 0 - 5407 - pts/0 00:00:00 bash
0 S 1000 2716 2698 0 80 0 - 5419 - pts/0 00:00:00 bash
0 R 1000 2745 2716 0 80 0 - 7465 - pts/0 00:00:00 ps

Dans l'exemple ci-dessus, le pid du shell courant est 2716. Son parent a pour pid 2698 (colonne PPID), et est lui-même un shell. Le shell courant est donc un shell fils.

2.2 - Type de shell (connexion - interactif)

Repris de : https://unix.stackexchange.com/questions/26676/how-to-check-if-a-shell-is-login-interactive-batch#26827

Les commandes suivantes permettent d'afficher

$ shopt -q login_shell && echo 'Shell de connexion' || echo 'Pas un shell de connexion'
$ [[ $- == *i* ]] && echo 'Shell interactif' || echo 'Shell non interactif'

3 - Clôture

La commande exit ou la combinaison de touches Ctrl D permettent

Les shells de connexion peuvent également être fermés avec la commande logout.