Jeremy Monnet a écrit :
On 2/24/06, Philippe Jacquot <philippe.j@sparx.com> wrote:
De fait, je faisais un truc comme ça:
#!/bin/bash if [ "x$0" == "xson" ]; then # ceci est le fils bidule truc machin umount /tra/la/la else # ceci est le popa zwig zwug exec -a son $0 fi
Qui ne marche pas, donc.
From the man: If -a is supplied, the shell passes name as the zeroth argument to the executed command. Que j'ai traduit par "Si y'a -a, le shell pass "name" en $0".
If command is specified, it replaces the shell. No new process is created. Ce qui veut dire que tu ne crées pas un nouveau fils, il remplace son père. Je ne suis pas sur d'obtenir le même comportement ? par exemple lancé en ligne de commande, la commande exec termine le shell. Logique, puisqu'il s'est remplacé par la commande donnée en argument, lorsque la commande s'arrête c'est la fin des haricots pour tout le monde.
Oui, oui, de fait. Un exec, c'est juste le process qui charge un nouveau code, mais garde l'environnement, les descripteurs, etc... donc pas de fork. En l'occurence, "exec -a bidule machin", charge le code de "machin" et, si je comprend bien le man, devrait mettre "bidule" dans $0. Or $0 ne change pas après l'exec. So what's dat -a ? Par exemple, avec le code suivant (/tmp/truc): #!/bin/sh echo $0 $@ exec -a bidule $0 J'aurai pensé avoir une première ligne avec "/tmp/truc", puis les autres avec "bidule". Mais que nenni. D'où ma perplexité. :) thx qd mm et a +
Jeremy -- Linux Registered User #317862 Linux From Scratch Registered User #16571 Please do not send me .doc, .xls, .ppt, as I will *NOT* read them. _______________________________________________ Shell mailing list Shell@lists.asyd.net http://lists.asyd.net/mailman/listinfo.cgi/shell