Python & shell linux

Fermé
BenDL Messages postés 4 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 18 février 2007 - 17 févr. 2007 à 16:11
 Skami_18 - 6 avril 2010 à 17:35
Bonjour tout le monde,

j'ai un probleme à priori tres simple:
j'écris un script qui fait simplement un changement de repertoire courant.
soit par une commande systeme soit par une commande python chdir

puis j'ouvre un shell et execute mon fichier python de la maniere suivante:
/monPath/monFichier.py
en ayant mis évidemment en premiere ligne #!/usr/bin/python pour le rendre executable

là je m'attend a me retrouver dans le repertoire défini dans mon script, et en fait pas du tout, rien ne se passe.
apres avoir un peu cherché je me rend compte que tout se passe bien le temps de l'execution du script (il va bien dans le directory) mais une fois fini le shell revient à son emplacement initial.

quelqu'un aurait une idée svp ??
ça a l'air super simple mais on avec deux amis on bloque totalement :(
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 févr. 2007 à 17:29
Salut,
mais une fois fini le shell revient à son emplacement initial.

regarde ça :-))
lami20j@debian:~$ chmod -v 0755 change.sh
Le mode d'accès de `change.sh' qui a été conservé est: 0755 (rwxr-xr-x).
lami20j@debian:~$ cat change.sh
#!/bin/bash

echo répertoire courant avant la commande cd : $PWD
cd /home/lami20j/trash
echo répertoire courant après la commande cd : $PWD
lami20j@debian:~$ pwd
/home/lami20j
lami20j@debian:~$ ./change.sh
répertoire courant avant la commande cd : /home/lami20j
répertoire courant après la commande cd : /home/lami20j/trash
lami20j@debian:~$ pwd
/home/lami20j
lami20j@debian:~$ source change.sh
répertoire courant avant la commande cd : /home/lami20j
répertoire courant après la commande cd : /home/lami20j/trash
lami20j@debian:~/trash$ pwd
/home/lami20j/trash
0
BenDL Messages postés 4 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 18 février 2007
17 févr. 2007 à 23:42
Salut et merci pour ta réponse.

Mais tout mon probleme est bien là... je m'explique:

La solution python m'interesse car le script doit pouvoir effectuer tout un ensemble d'operations autre qu'un simple 'cd /xxx/xxx'. Le comportement du script s'adapte en fonction du type de repertoire dans lequel l'utilisateur veut aller.

N'y arrivant pas je me suis tourné rapidement vers du bash ou tcsh.
Mais le paradoxe est que meme avec un script bash il faut necessairement sourcer le script manuellement pour qu'il fonctionne. Si je l'execute via une procedure python cela donne le meme resultat qu'en python pure.
la seule solution est de taper réellement "source totot.sh"
l'équivalent en python serait os.system('source totot.sh')
mais là ça ne marche pas.

aurais tu une idée ?
0
Non, l'équivalent de "source" en Python est "import".
0