#1 Le 04/04/2007, à 09:58
- compte supprimé
[résolu] cd ~/le/chemin dans un bash
Bjr
#!/bin/bash
cd ~/le/chemin
#[... qq instructions...]
J'aimerais bien rester dans ~/le/chemin une fois le script fini, c'est possible ?
Dernière modification par weenu (Le 06/04/2007, à 17:56)
#2 Le 04/04/2007, à 10:48
- woodstock
Re : [résolu] cd ~/le/chemin dans un bash
Ben... moi j'y reste d'office en fin de script....
Hors ligne
#3 Le 04/04/2007, à 14:38
- JoelS
Re : [résolu] cd ~/le/chemin dans un bash
#!/bin/bash cd ~/le/chemin #[... qq instructions...]
J'aimerais bien rester dans ~/le/chemin une fois le script fini, c'est possible ?
Non si tu exécutes le script en question. Ton script bash est lancé comme un processus fils du processus courant, probablement un shell interactif. Le processus fils hérite (plus ou moins mais plutôt plus :-)) du contexte du processus père. Mais il n'y a pas de récupération par défaut par le processus père du contexte du processus fils, excepté le code d'erreur. Il faut mettre en place un mécanisme explicite, et c'est très lourd pour simplement rester dans un répertoire...
Oui si le shell bash appelant (le processus père) 'source' le script en question. Dans ce cas, les commandes écrites dans le script sont exécutées une à une par le père. La première étant 'cd ...', c'est le père qui change son répertoire de travail. ATTENTION: c'est en général une fausse bonne idée, puisque tu risques de 'casser' le processus père par inadvertance, le script appelé faisant tout dans le contexte direct du père pas dans une copie. On gardes ça en général simplement pour positionner des ensembles de variables par exemple, ou dans des cas bien précis et connus, comme dans le cas du lancement du premier shell interactif qui va 'sourcer' plusieurs fichiers bash.
@woodstock: ah bon, et que donnes le résultat de ça:
# cd $HOME
# pwd
/home/joel
# cat > ./test.sh <<EOF
#!/bin/bash
cd /tmp
pwd
EOF
# chmod 775 ./test.sh
# ./test.sh
/tmp
# pwd
/home/joel
#
Hors ligne
#4 Le 04/04/2007, à 15:17
- woodstock
Re : [résolu] cd ~/le/chemin dans un bash
mouip.... c'est vrai que j'ai tendance à lancer mes scripts par la commande
. script.sh
plutôt que de les rendre executables... donc je ne crée pas de fils.
Merci pour l'explication... trés logique en fait.
Hors ligne
#5 Le 04/04/2007, à 15:24
- compte supprimé
Re : [résolu] cd ~/le/chemin dans un bash
@Joels : bravo et merci pour les détails. Mais dit plus simplement ça donne quoi pour le paragraphe "Oui" ?
#6 Le 04/04/2007, à 20:27
- JoelS
Re : [résolu] cd ~/le/chemin dans un bash
@Joels : bravo et merci pour les détails. Mais dit plus simplement ça donne quoi pour le paragraphe "Oui" ?
Plus simple, je sais pas faire. Mais je connais des gars capables de tenir 2 jours la dessus :-) Bon essayes le test écrit pour woodstock, et puis tapes la commande suivante:
# . ./test.sh
# pwd
et tu verras bien :-)
Hors ligne