On Tue, 16 Oct 2001 11:09:10 +0200 (MEST),
    Marc SCHAEFER <[EMAIL PROTECTED]> wrote:

> On Tue, 16 Oct 2001, Thierry Lombardot wrote:
> 
> > Pourquoi une commande telle que "cd" ne fonctionne pas dans un script shell?
> 
> Cela découle du concept de sous-processus du shell: *chaque* commande est
> exécutée dans un sous-shell, sauf les commandes internes du shell. Les
> commandes internes sont par exemple: cd.
> 
> Un sous-processus ne peut pas modifier l'environnement de son père (le
> shell). Donc, la seule façon pour que ton cd fonctionne, est d'exécuter cd
> dans le père.

Une petite précision encore à tout ce qui a été dit. Distinguons 

- les commandes dont l'action se répercute de manière (plus ou moins)
  durable sur l'état - global - de la machine (système de fichier, etc)

- les commandes dont l'action se répercute de manière (plus ou moins)
  durable sur l'état - local - du shell

Dans la première catégorie : mkdir, touch, rm,...
Dans la seconde catégorie  : cd, set, trap,...

Dans le premier cas, il importe peu (en principe) que la commande soit
exécutée par le shell lui-même ou par un sous shell, alors que dans le
second cas la différence est fondamentale, puisque les changements sont
perdus lorsque le sous-shell se termine.

Pour le cas de cd, il suffit de se souvenir que cette commande ne fait rien
d'autre que de modifier la valeur de la variable (interne) CWD (current
working directory) du shell courant.

-- 
   ___  _  ___    Jean-Albert FERREZ        [EMAIL PROTECTED]
  '  / / \ \      EPFL  -  Chaire de Recherche Operationnelle  -  ROSO
 ,--/-/---\-\---------------------------------------------------------
 \_/ /     \ \                http://rosowww.epfl.ch/jaf/
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.

Répondre à