Python & shell linux

BenDL Messages postés 4 Statut Membre -  
 Skami_18 -
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 :(
Configuration: Windows XP
Ubuntu
Suse

Firefox 2.0.0.1

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  2. BenDL Messages postés 4 Statut Membre
     
    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
    1. Skami_18
       
      Non, l'équivalent de "source" en Python est "import".
      0