Sortir d'un script dans un repertoire défini
hexomon
Messages postés
65
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
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
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:
- Sortir d'un script dans un repertoire défini
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Répertoire téléphonique gratuit - Télécharger - Bureautique
- Remettre un pc en sortie d'usine - Guide
- Mas script - Accueil - Windows
6 réponses
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
A + :)
Hexomon
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 :
;-))
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 ;-((
;-))
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
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
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 ?
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"
};-))