Deplacement d arborescence dans script bash

Fermé
steph - 12 mai 2005 à 16:49
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 - 12 mai 2005 à 17:31
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

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
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
12 mai 2005 à 17:06
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
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
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
12 mai 2005 à 17:11
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
12 mai 2005 à 17:31
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