Rechercher : dans
Par :

Deplacement d arborescence dans script bash

Dernière réponse le 12 mai 2005 à 17:31:04 steph, le 12 mai 2005 à 16:49:03 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Deplacement d arborescence dans script bash » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...

1

fozzie, le 12 mai 2005 à 17:01:15

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

Répondre à fozzie

2

kmf31, le 12 mai 2005 à 17:06:14

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.

Répondre à kmf31

3

steph, le 12 mai 2005 à 17:06:33

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.

Répondre à steph

4

kmf31, le 12 mai 2005 à 17:11:44

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.

Répondre à kmf31

5

steph, le 12 mai 2005 à 17:18:06

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.

Répondre à steph

6

 kmf31, le 12 mai 2005 à 17:31:04

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.

Répondre à kmf31
Collection CommentÇaMarche.net