Vous êtes sur la page 1sur 3

12/3/2016 Présentation

Tuteurs informatique 
Nous contacter

Utiliser ce site
Actu et stages
Présentation du
Docs à imprimer
Plan du site
Rechercher
shell
Les tuteurs
Unix Les deux états du shell
Shell Comment le shell trouve­t­il les commandes ?
Boucles
Commandes L'ordre de recherche
Entrée/sortie Les commandes internes
Fonctions Quels programmes utilisent le langage du shell ?
Présentation Les scripts shell
Scripts Le script .profile
Tests
Variables Le script .xinitrc
Créer ses propres scripts
Serveur des élèves
ENS

Les deux états du shell
SPI

Le shell, comme le normalien, ne connaît que deux états :

le travail ;
l'inactivité.

Le shell, une fois lancé, est inactif : il attend qu'on lui donne des ordres.
Quand on lui en donne un, il l'exécute ; et quand il a terminé, il retourne à son
état d'inactivité, en attente d'un nouveau commandement.
Quand  le  shell  est  inactif,  il  affiche  une  invite  (prompt  en  anglais),  qui
ressemble à cela :
        chaland ~ $ 
      

Un  curseur,  parfois  clignotant,  indique  que  le  shell  attend  que  vous  lui
tapiez des instructions.

Comment le shell trouve­t­il les
commandes ?
L'ordre de recherche
J'ai l'habitude de taper des commandes dans le shell, et je vois qu'il réagit.
Mais comment comprend­il ce que je veux faire ?
Prenons un cas simple. Je tape la commande bonjour à l'invite (prompt) du
shell. Il va chercher à plusieurs endroits ce que j'entends par là :

1.  d'abord, il va se demander si bonjour n'est pas une de ses commandes
intégrées ; si c'est le cas, il l'exécute directement, sinon il passe à l'étape
http://www.tuteurs.ens.fr/unix/shell/presentation.html 1/3
12/3/2016 Présentation

suivante ;
2.  ensuite, il va lire le contenu d'une variable, qui s'appelle PATH, et qui
indique le « chemin » où trouver les commandes que l'on appelle. Par
exemple, si la variable PATH contient les répertoires :
/usr/bin
/bin et
/home/toto/bin,
alors le shell va chercher successivement les commandes :
/usr/bin/bonjour,
/bin/bonjour et
/home/toto/bin/bonjour ;
3.  enfin, s'il ne trouve la commande dans aucun des répertoires référencés
par le PATH, il va renvoyer un message d'erreur en disant que désolé, il ne
voit pas ce que l'on entend par bonjour. Exemple :
chaland ~ $ bonjour 
bonjour: Command not found

La variable  PATH consiste en une liste de répertoires séparés par des «  : ».


Si vous voulez voir à quoi ressemble votre PATH, tapez :
chaland ~ $ echo $PATH

Les commandes internes
Certaines  commandes  du  shell  ne  sont  pas  des  programmes  mais  des
commandes  internes  (builtins  functions).  Comme  nous  l'avons  vu,  elles  sont
directement  reconnues  et  exécutées  par  le  shell.  Un  exemple  de  commande
interne est cd ; elle modifie le répertoire courant du shell.

Attention  :  si  vous  créez  un  script


(c'est­à­dire  un  programme  écrit  en
langage shell) qui utilise  cd, il ne modifie
pas le répertoire courant du shell qui lance
ce script, mais celui d'un shell qui est créé
à l'occasion de l'exécution de ce script, et
qui meurt à la fin de cette exécution.
Exemple : je crée un script  aller qui
contient les lignes suivantes :
#! /bin/sh 
cd $*

Nous aurons alors :
chaland ~ $ aller toto 
chaland ~ $ cd toto 
chaland ~/toto $

Quels programmes utilisent le
langage du shell ?
http://www.tuteurs.ens.fr/unix/shell/presentation.html 2/3
12/3/2016 Présentation

Les scripts shell
La répétition de commandes complexes en ligne de commande du shell est
rapidement  fastidieuse  ;  aussi  est­il  très  pratique  de  connaître  les  bases  de  la
programmation  de  scripts  shell.  Les  scripts  servent  à  automatiser  ou
systématiser des tâches.

Le script .profile
Il existe un script spécial, qui est exécuté au moment où on se connecte.
Ce script est contenu dans le fichier  $HOME/.profile. C'est  ce  fichier  qui  vous
dit si vous avez du courrier, etc.
Ce fichier est normalement mis à jour automatiquement par les scripts de
la config conscrits. Il est néanmoins possible de le modifier pour changer des
options.

Le script .xinitrc
Il existe encore le script  .xinitrc,  qui  lance  X  ;  X  est  le  gestionnaire  de
fenêtres classique sous Unix.

Créer ses propres scripts
Le  nombre  de  scripts  possibles  est  illimité  ;  vous  pouvez  en  créer  autant
que  vous  voulez,  selon  vos  besoins  :  c'est  ainsi  que  l'on  personnalise  son
système  et  qu'on  l'adapte  à  ses  exigences,  plutôt  que  l'inverse.  Pour  en  savoir
plus  sur  la  programmation  en  shell,  consultez  les  pages  consacrées  à  la
programmation  de  scripts  en  shell.  Ou  bien  vous  pouvez  revenir  à  la  page
centrale  sur  le  shell,  d'où  vous  pourrez  vous  orienter  vers  d'autres  parties  du
cours.

Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
Modifications : Nicolas George, Baptiste Mélès. Dernière modification : Sun Oct 26
21:40:25 2014 +0100 par Antoine Amarilli.

http://www.tuteurs.ens.fr/unix/shell/presentation.html 3/3