Bah ça marche, mais le cwd est uniquement modifé pour ton programme (et ses fils, éventuellement).
Immagine le bordel que ça serait si un processus pouvait modifier l'environement du processu qui l'a lancé ?
Note bien que "cd" est une command interne au shell. Au contraire de ms-dos/windows, qui est donc un système qui ne fourni pas cette "imperméabilité" de l'environement d'exécution du parent par son fils ou sous-fils.
Bref soit tu lance un nouveau shell depuis ton programme, soit tu demande au shell qui lance ton programme d'exécuter quelle que chose à la suite, genre output=`./monprog|tail -1`; ret=$?; if test $ret eq 42 then eval cd $output; fi En mieux tu peux utiliser un autre descripteur de sortie pour ne pas devoir réserver ton stdout à cette seule fin. IIRC, certaines distribution configurent un "alias" dans le shell pour midnight commander (mc) afin de pouvoir positionner le répertoire courant du shell sur le dernier visité par mc à la sortie de celui-ci. Tu peux t'inspirer de celà si cela est vraiment nécessaire. Perso, je trouve bizard d'attendre un tel comportement... Dans tout les cas tu devras trouver un système qui demande la coopération du shell appellant :-/
# ça marche
Posté par benja . En réponse au message Commande qui ne fonctionne pas. Évalué à 3.
Bah ça marche, mais le cwd est uniquement modifé pour ton programme (et ses fils, éventuellement).
Immagine le bordel que ça serait si un processus pouvait modifier l'environement du processu qui l'a lancé ?
Note bien que "cd" est une command interne au shell. Au contraire de ms-dos/windows, qui est donc un système qui ne fourni pas cette "imperméabilité" de l'environement d'exécution du parent par son fils ou sous-fils.
Bref soit tu lance un nouveau shell depuis ton programme, soit tu demande au shell qui lance ton programme d'exécuter quelle que chose à la suite, genre
output=`./monprog|tail -1`; ret=$?; if test $ret eq 42 then eval cd $output; fiEn mieux tu peux utiliser un autre descripteur de sortie pour ne pas devoir réserver ton stdout à cette seule fin. IIRC, certaines distribution configurent un "alias" dans le shell pour midnight commander (mc) afin de pouvoir positionner le répertoire courant du shell sur le dernier visité par mc à la sortie de celui-ci. Tu peux t'inspirer de celà si cela est vraiment nécessaire. Perso, je trouve bizard d'attendre un tel comportement... Dans tout les cas tu devras trouver un système qui demande la coopération du shell appellant :-/