Sortir d'un script dans un repertoire défini

Fermé
hexomon Messages postés 60 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 21 décembre 2022 - 24 août 2007 à 12:03
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 24 août 2007 à 16:05
Bonjour,

Je suis sur un Aix et je suis en train de faire un script où à un moment l'utilisateur doit pouvoir sortir du script dans un repertoire précis spécifié par mes soins.

J'ai testé un simple "cd /truc/bidule", mais ça ne marche pas. Au pif, j'ai essayé "exit /truc/bidule" mais sans résultat. Si ça dit quelque chose à quelqu'un, merci d'avance :)

Bonne journée,

Hexomon
A voir également:

6 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 août 2007 à 12:11
Salut,
{
cd /truc/bidule
}
;-))
0
hexomon Messages postés 60 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 21 décembre 2022 1
24 août 2007 à 13:04
Merci beaucoup :) Mais j'ai testé et ça ne fonctionne pas: quand je sors du script je suis toujours dans le même repertoire.

A + :)

Hexomon
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 août 2007 à 13:55
Oups, je suis allé un peu vite, ça c'est pour exécuter des commandes dans l'environnement du shell père...

Donc voilà une solution, en fait il faut sourcer le script et en faire de même avec un fichier temporaire contenant le répertoire voulu :
[tmpfs]$ cat foo.sh

#! /bin/bash

echo -e "Je suis dans le répertoire : \c"
pwd
{
echo "J'entre dans le répertoire racine..."
echo 'cd /' | tee  fich.tmp
source fich.tmp
echo -e "Je suis dans le répertoire : \c"
pwd
}

[tmpfs]$ pwd
/home/jp/tmpfs

[tmpfs]$ . ./foo.sh

Je suis dans le répertoire : /home/jp/tmpfs
J'entre dans le répertoire racine...
cd /
Je suis dans le répertoire : /

[/]$ pwd
/
[/]$
Attention toutefois, pas de commande "exit" dans le script sous peine de se voir déconnecter ;-((

;-))
0
hexomon Messages postés 60 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 21 décembre 2022 1
24 août 2007 à 14:30
Je vais tester ça :)

Encore merci et bonne journée

Hexomon
0

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

Posez votre question
au sens strict il n'y a pas de moyen qu'un script (qui est un programme distinct de ton shell) puisse changer le repertoire de ton shell.

Note que la commande cd n'est pas un programme,'est un mot clef du shell.

La seule solution c'est que ce soit ton shell lui même qui execute tout ou partie du script.

Il y a deux solutions pour cela:

utiliser la commande point, "." qui fait executer par ton shell une suite de commandes contrenues dans un fichier, et revient ensuite au clavier.

mais ce n'est pas satisfaisant car l'utilisateur va oublier le "."

l'autre solution (en bash) est de faire une commande shell


~$ gotmp() {
> cd /tmp/
> }
~$ gotmp
/tmp$

que tu mettra dans le .profile

Voila
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 août 2007 à 16:05
Merci pour ces explications, mais quleques petits points à éclaircir ;-))

Note que la commande cd n'est pas un programme,c'est un mot clef du shell.
En fait de mot clé, c'est juste une commande interne du shell (builtin)


utiliser la commande point, "." qui fait executer par ton shell une suite de commandes contrenues dans un fichier
La commande s'appelle "source" et peut être appelée soit par son nom "source fichier" soit par sa forme abrégée "." (point).

l'autre solution (en bash) est de faire une commande shell
On appelle cela une fonction.

Et je pense que pour être efficace, peut être vaudrait-il mieux y adjoindre la possibilité de tenir compte d'un argument passé en paramètre, non ?
gotorep() {
cd "$1"
}
;-))

0