et le cas de . ?

. monscript.sh ?

On Wed, 20 Jun 2001, Frédéric Detienne wrote:

> bon et bien dit. Resumons:
> 
> supposons le script "monscript" au aurait comme premiere ligne "#!/bin/sh". Pour le 
>lancer, deux cas de figure
> 
> 
> 1) ce script est marque executable (chmod a+x monscript) et on le lance avec 
>./monscript ou simplement script (s'il est dans le PATH).
> 
> le shell ou dans lequel on tape la commande ./monscript se scinde en deux avec 
>fork() puis le processus fils appelle execve() avec "monscript" en argument. execve() 
>dit au kernel d'executer "monscript". Le kernel analyse les premiers bytes du fichier 
>et voit #! Il sait donc qu'il doit en fait lancer le programme sur la fin de cette 
>ligne (ici, /bin/sh) avec comme argument le script lui meme.
> 
> Nous tombons alors dans le cas de figure 2
> 
> 
> 2) le script est lance avec la command "sh monscript".
> 
> Comme dans (1), le shell courant fork() et le processus fils donne _sh_ comme 
>parametre a execve(). sh est execute, il lit le script et ignore la premiere ligne 
>car elle demarre avec le caractere de commentaire (#). sh execute les commandes du 
>script.
> 
> 
> 
> Donc en appliquant la recette sur le probleme de depart:
> 
> on a un script "monscript" qui a comme premiere ligne "#!/bin/bash" et on lance le 
>script avec "tcsh monscript" depuis un shell korn (par exemple). Dans ce cas, le korn 
>shell fork() (se duplique, quoi), le processus fils demande un excve au kernel: on 
>doit executer tcsh avec monscript comme argument. tcsh demarre et commence a lire 
>monscript. La premiere ligne est *ignoree* (# designe un commentaire dans tous les 
>shells). Comme il y aura des commandes bash que tcsh ne comprendra pas, cela 
>resultera certainement en un erreur a l'execution.
> 
> 
> wala wala.
> 
>       fred
> 
> 
> Jean-Louis Matton wrote:
> > 
> > Pablo Saratxaga a écrit :
> > >
> > > Kaixo!
> > >
> > > On Tue, Jun 19, 2001 at 04:04:54PM +0200, Eugène Sandford wrote:
> > >
> > > >> Mon avis:
> > > >> Ce n'est pas le shell qui interprète le #! mais le système lorsque
> > > >> l'on execute directement un executable
> > >
> > > Exact. (regarder les sources du noyau pour les détails).
> > >
> > > > Quand tu rends ton script exécutable, il va prendre par contre
> > > > le "#!/bin/bash" de la première ligne comme l'interpréteur de ton script.
> > >
> > > Oui, mais qui c'est qui lis cette première ligne et en conclus qu'il faut
> > > lancer /bin/bash? C'est le noyau.
> > c'est le shell en court.
> > Si on lance le script en argument d'un shell on force le à utiliser ce
> > shell,
> > la première ligne n'est pas interprétée.
> > 
> > >
> > > --
> > > Ki ça vos våye bén,
> > > Pablo Saratxaga
> > >
> > > http://www.srtxg.easynet.be/            PGP Key available, key ID: 0x8F0E4975
> > >
> > > [ Soyez précis dans vos sujets svp afin de déterminer directement  ]
> > > [ le type de demande...                                            ]
> > > [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
> > > [ http://LinuxBe.org              Contact: [EMAIL PROTECTED]  ]
> > 
> > --
> > Jean-Louis Matton                      Cliniques universitaire St LUC
> > tel        +32.2.764.37.13                     av. Hippocrate 10/ SIH
> > fax        +32.2.764.89.22                     B-1200 Bruxelles
> > mailto:[EMAIL PROTECTED]         BELGIUM
> > ---------------------------------------------------------------------
> > Thinking ahead      U   U  N   N   III   X   X
> >                     U   U  NN  N    I     X X
> >                     U   U  N N N    I      X
> >                     U   U  N  NN    I     X X
> >                      UUU   N   N   III   X   X       LIVE FREE OR DIE
> > ---------------------------------------------------------------------
> > 
> > [ Soyez précis dans vos sujets svp afin de déterminer directement  ]
> > [ le type de demande...                                            ]
> > [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
> > [ http://LinuxBe.org              Contact: [EMAIL PROTECTED]  ]
> 
> 

 


[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ http://LinuxBe.org              Contact: [EMAIL PROTECTED]  ]

Répondre à