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] ]