Deplacement d arborescence dans script bash

steph -  
kmf31 Messages postés 1564 Statut Contributeur -
Bonjour ceci est tres important c est pour un projet en master info et g un dernier prob ke j arrive pas a regler :
je lance un script bash, dans ce script je fais cd yyyy
ca va dedans, mais des que je sors je retourne dans le bash parent et je ne suis plus dans yyyy.
Svp est il possible de faire en sorte de retourner dans le bash pere en etant bien dans yyyy.
Mercienormement

5 réponses

  1. fozzie
     
    je te conseille de chercher un autre moyen.
    un exemple qui marche (même si pas très joli), dans le shell fils tu écris le chemin dans un fichier et le père va lire le contenu du fichier quand il reprend la main
    0
  2. kmf31 Messages postés 1564 Statut Contributeur 501
     
    C'est comme avec les variables environements qui sont perdues apres retour du script. La seule facon que je connaisse pour contourner ce probleme est de lancer le script avec un "." et un blanc " " devant, c.-a-d. il faut faire:
    .  /chemin/script.sh

    ou
    . ./script.sh

    (si au debut on est dans le meme repertoire que le script).
    Si on fait comme ca les variables modifiees du script sont reportees a la shell actuelle (ou au script au dessus). Un "cd /autre_repertoire" restera aussi valable.

    Par contre si on fait de facon standard avec:
    /chemin/script.sh

    ou
    ./script.sh

    ni les variables sont reportees ni le cd marche.

    J'espere que ca te permet de resoudre ton pb.
    0
  3. steph
     
    Oui mais ca ira pas car en fait je fais une sorte de nfs, et il fo ke les commandes soient transparentes.
    Donc le mec tape cd yyyy,
    ca va dans le script fils qui s appele cd.sh (defini ac un alias)
    Donc le fichier fils se retrouve avec un endroit ou aller.
    Monbut est que le fils y aille et que le bash pere n est rien vu du tout c est mega important.
    0
    1. kmf31 Messages postés 1564 Statut Contributeur 501
       
      Si tu fais un alias:

      alias mon_cd='. cd.sh'


      ca va marcher si "cd.sh" est dans le PATH.
      Par contre avec un alias on peut faire directement le cd donc pas besoin d'un script.
      0
  4. steph
     
    Ben si tu veux mon cd.sh fé plein d autre choses dedans.
    Par conte puis je faire?

    alias cd=. /chemin/cd.sh

    et dans mon cd.sh pour contourner l alias je fais un

    cd --noprofile -c chem

    et en sortant d un cd je me trouve dans chem????
    Si c est bon ca serait genial.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kmf31 Messages postés 1564 Statut Contributeur 501
     
    alias cd=. /chemin/cd.sh

    Oui, absolument mais plutot avec les guillemets (surtout pour le caractere blanc!):
    alias cd='. /chemin/cd.sh'

    Par contre je ne sais pas pour les options "--noprofile -c" mais si ton probleme est que "cd" est un alias et tu souhaites l'appeler sans alias, dans ce cas tu peux faire
    \cd /chemin

    Le "\" devant une commande quelconque evite l'utilisation d'un alias avec le meme nom.
    0