shell utilisé par system() ?

Le
mpg
Bonjour,

Quel est le shell utilisé par la fonction system() pour, par exemple,
développer les * et autres ?

Manuel.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #6187441
mpg wrote in message
Quel est le shell utilisé par la fonction system() pour, par exemple,
développer les * et autres ?


Le Murphy shell : s'il y a une moindre dépendance de ton programme au
comportement du shell, tu peux être sûr qu'il y aura des fois où ce sera le
mauvais qui sera appelé.

Donc il faut faire des programmes qui n'en dépendent pas.

espie
Le #6242521
In article Nicolas George
mpg wrote in message
Quel est le shell utilisé par la fonction system() pour, par exemple,
développer les * et autres ?


Le Murphy shell : s'il y a une moindre dépendance de ton programme au
comportement du shell, tu peux être sûr qu'il y aura des fois où ce sera le
mauvais qui sera appelé.

Donc il faut faire des programmes qui n'en dépendent pas.


Pour completer la reponse de Nicolas, glob() te permettra d'etendre toi-meme
les parametres comme tu veux, et la syntaxe 'system LIST' te permet d'invoquer
un programme sans passer par un shell.

perldoc -f system est un peu plus optimiste (si j'ose dire) et te garantit
'/bin/sh -c' sur les plateformes Unix.

Comme de toutes facons, hors Unix, tu peux t'attendre a une grosse dose de
n'importe quoi sur tout ce qui ressemble de pres ou de loin a 'system',
il n'y a pas grand risque, en fait.

Mais bon, system + shell, c'est plus un raccourci pour petit script qu'une
construction vraiment solide a utiliser en perl...


mpg
Le #6333861
Le (on) mardi 22 avril 2008 23:58, Marc Espie a écrit (wrote) :

In article Nicolas George
Le Murphy shell : s'il y a une moindre dépendance de ton programme au
comportement du shell, tu peux être sûr qu'il y aura des fois où ce sera
le mauvais qui sera appelé.

:)



Pour completer la reponse de Nicolas, glob() te permettra d'etendre
toi-meme les parametres comme tu veux, et la syntaxe 'system LIST' te
permet d'invoquer un programme sans passer par un shell.

Oki, c'est bon à savoir. J'aime beaucoup la référence au shell

Unix « standard » csh : personellement, ça ne m'apprend pas grand chose sur
les détails du globbing effectué :/

perldoc -f system est un peu plus optimiste (si j'ose dire) et te
garantit '/bin/sh -c' sur les plateformes Unix.

Le script en question n'est de toutes façons pas du tout supposé tourner

hors plateforme Unix. Mes expériences m'avaient montré qu'apparemment, ça
ne dépend pas du shell préféré de la personne qui invoque le script. C'est
cool de savoir.

Au fait, j'avais bêtement essayé perldoc system et oublié de regarder man
perldoc pour trouver -f (la fatigue). Merci pour l'info :)

Mais bon, system + shell, c'est plus un raccourci pour petit script qu'une
construction vraiment solide a utiliser en perl...


Disons que le script en question, sans être petit, n'a pas vraiment vocation
à être une oeuvre d'art ou un monument de robustesse. Je note quand même
tes remarques pour d'autres occasions.

Manuel.


Paul Gaborit
Le #6340611
À (at) Wed, 23 Apr 2008 12:04:02 +0200,
mpg
Le (on) mardi 22 avril 2008 23:58, Marc Espie a écrit (wrote) :
Pour completer la reponse de Nicolas, glob() te permettra d'etendre
toi-meme les parametres comme tu veux, et la syntaxe 'system LIST' te
permet d'invoquer un programme sans passer par un shell.

Oki, c'est bon à savoir. J'aime beaucoup la référence au shell

Unix « standard » csh : personellement, ça ne m'apprend pas grand chose sur
les détails du globbing effectué :/


C'est pour lever cette imprécision que depuis la version 5.6.0 de
perl, glob() est implémenté via File::Glob. Et en lisant la doc de ce
module, on s'aperçoit que la référence est POSIX glob() (je vous
laisse le soin de lire le reste...).

--
Paul Gaborit - Perl en français -

Publicité
Poster une réponse
Anonyme