Dans un script bash, je veux à la fin du script que l'utilisateur se
retrouve dans un répertoire donné. Donc dans mon script, (la variable
$dir contenant "/mnt/win") je mets:
8<------------------------------------
ChangeDir="cd"$dir
echo "1 XXX"
CdDirReussi= `echo $ChangeDir `
echo "2 XXX"
8<------------------------------------
Et à l'exécution j'ai:
8<------------------------------------
1 XXX
/usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type
2 XXX
8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir,
donc je corrige (ChangeDir="cd "$dir)
Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas
non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes
foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va
aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm:
8<------------------------------------
08:50pm hugo@Deborah ~ $ dir="/mnt/win"
08:51pm hugo@Deborah ~ $ echo $dir
/mnt/win
08:51pm hugo@Deborah ~ $ ChangeDir= "cd "$dir
bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
08:51pm hugo@Deborah ~ $ dir="/mnt/win"
08:52pm hugo@Deborah ~ $ echo $dir
/mnt/win
08:52pm hugo@Deborah ~ $ CdDirReussi= "cd "$dir
bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
08:52pm hugo@Deborah ~ $ echo $CdDirReussi
Donc j'ai bidouillé, et j'ai essayé dans mon script:
8<------------------------------------
echo "1 XXX"
cd $dir <-- [2]
echo "2 XXX"
CdDirReussi= "cd "$dir
echo "3 XXX"
CdDirReussi= `cd $dir`
echo "4 XXX"
CdDirReussi= echo "cd "$dir
echo "5 XXX"
CdDirReussi= echo `cd $dir`
echo "6 XXX"
8<------------------------------------
et à l'exécution ça donne:
8<------------------------------------
1 XXX <-- [2] Que Dalle
2 XXX
/usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type
3 XXX
4 XXX
cd /mnt/win
5 XXX
6 XXX
8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas
dans un script [2].
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers
un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd"
et le nom du répertoire par exemple:
bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre
remarque que dans un xterm le message d'erreur previent de bash alors
que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me
met le "cd" en jaune ? "cd" serait une commande réservée dans les
scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ?
Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et
pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que
j'ai récupérée sur le net) ?
Merci de m'avoir lu...
--
> dvips -o $@ $<
Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :))
-+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Philippe Delsol
Hugolino a écrit dans le message ...
Bonjour à tous
Dans un script bash, je veux à la fin du script que l'utilisateur se retrouve dans un répertoire donné. Donc dans mon script, (la variable $dir contenant "/mnt/win") je mets: 8<------------------------------------ ChangeDir="cd"$dir echo "1 XXX" CdDirReussi= `echo $ChangeDir ` echo "2 XXX" 8<------------------------------------
Et à l'exécution j'ai: 8<------------------------------------ 1 XXX /usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type 2 XXX 8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir, donc je corrige (ChangeDir="cd "$dir) Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm: 8<------------------------------------ 08:50pm ~ $ dir="/mnt/win" 08:51pm ~ $ echo $dir /mnt/win 08:51pm ~ $ ChangeDir= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type 08:51pm ~ $ dir="/mnt/win" 08:52pm ~ $ echo $dir /mnt/win 08:52pm ~ $ CdDirReussi= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type 08:52pm ~ $ echo $CdDirReussi
Donc j'ai bidouillé, et j'ai essayé dans mon script: 8<------------------------------------ echo "1 XXX" cd $dir <-- [2] echo "2 XXX" CdDirReussi= "cd "$dir echo "3 XXX" CdDirReussi= `cd $dir` echo "4 XXX" CdDirReussi= echo "cd "$dir echo "5 XXX" CdDirReussi= echo `cd $dir` echo "6 XXX" 8<------------------------------------ et à l'exécution ça donne: 8<------------------------------------ 1 XXX <-- [2] Que Dalle 2 XXX /usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type 3 XXX 4 XXX cd /mnt/win 5 XXX
6 XXX 8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas dans un script [2].
C'est un comportement normal du bash et de tout shell en général ... Quand tu exécutes ton script tu lances un nouveau shell. La commande "cd" reste propre à ce nouveau shell (le cd s'exécute dans ce nouveau shell). Quand tu quittes le script tu reviens au contexte initial (ton xterm avec l'environnement de départ).
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd" et le nom du répertoire par exemple: bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre remarque que dans un xterm le message d'erreur previent de bash alors que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me met le "cd" en jaune ? "cd" serait une commande réservée dans les scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ? Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que j'ai récupérée sur le net) ?
Merci de m'avoir lu...
Philippe
--
dvips -o $@ $< Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :)) -+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
Hugolino a écrit dans le message ...
Bonjour à tous
Dans un script bash, je veux à la fin du script que l'utilisateur se
retrouve dans un répertoire donné. Donc dans mon script, (la variable
$dir contenant "/mnt/win") je mets:
8<------------------------------------
ChangeDir="cd"$dir
echo "1 XXX"
CdDirReussi= `echo $ChangeDir `
echo "2 XXX"
8<------------------------------------
Et à l'exécution j'ai:
8<------------------------------------
1 XXX
/usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type
2 XXX
8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir,
donc je corrige (ChangeDir="cd "$dir)
Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas
non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes
foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va
aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm:
8<------------------------------------
08:50pm hugo@Deborah ~ $ dir="/mnt/win"
08:51pm hugo@Deborah ~ $ echo $dir
/mnt/win
08:51pm hugo@Deborah ~ $ ChangeDir= "cd "$dir
bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
08:51pm hugo@Deborah ~ $ dir="/mnt/win"
08:52pm hugo@Deborah ~ $ echo $dir
/mnt/win
08:52pm hugo@Deborah ~ $ CdDirReussi= "cd "$dir
bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
08:52pm hugo@Deborah ~ $ echo $CdDirReussi
Donc j'ai bidouillé, et j'ai essayé dans mon script:
8<------------------------------------
echo "1 XXX"
cd $dir <-- [2]
echo "2 XXX"
CdDirReussi= "cd "$dir
echo "3 XXX"
CdDirReussi= `cd $dir`
echo "4 XXX"
CdDirReussi= echo "cd "$dir
echo "5 XXX"
CdDirReussi= echo `cd $dir`
echo "6 XXX"
8<------------------------------------
et à l'exécution ça donne:
8<------------------------------------
1 XXX <-- [2] Que Dalle
2 XXX
/usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type
3 XXX
4 XXX
cd /mnt/win
5 XXX
6 XXX
8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas
dans un script [2].
C'est un comportement normal du bash et de tout shell en général ...
Quand tu exécutes ton script tu lances un nouveau shell.
La commande "cd" reste propre à ce nouveau shell (le cd s'exécute dans ce
nouveau shell).
Quand tu quittes le script tu reviens au contexte initial (ton xterm avec
l'environnement de départ).
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers
un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd"
et le nom du répertoire par exemple:
bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre
remarque que dans un xterm le message d'erreur previent de bash alors
que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me
met le "cd" en jaune ? "cd" serait une commande réservée dans les
scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ?
Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et
pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que
j'ai récupérée sur le net) ?
Merci de m'avoir lu...
Philippe
--
dvips -o $@ $<
Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :))
-+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
Dans un script bash, je veux à la fin du script que l'utilisateur se retrouve dans un répertoire donné. Donc dans mon script, (la variable $dir contenant "/mnt/win") je mets: 8<------------------------------------ ChangeDir="cd"$dir echo "1 XXX" CdDirReussi= `echo $ChangeDir ` echo "2 XXX" 8<------------------------------------
Et à l'exécution j'ai: 8<------------------------------------ 1 XXX /usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type 2 XXX 8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir, donc je corrige (ChangeDir="cd "$dir) Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm: 8<------------------------------------ 08:50pm ~ $ dir="/mnt/win" 08:51pm ~ $ echo $dir /mnt/win 08:51pm ~ $ ChangeDir= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type 08:51pm ~ $ dir="/mnt/win" 08:52pm ~ $ echo $dir /mnt/win 08:52pm ~ $ CdDirReussi= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type 08:52pm ~ $ echo $CdDirReussi
Donc j'ai bidouillé, et j'ai essayé dans mon script: 8<------------------------------------ echo "1 XXX" cd $dir <-- [2] echo "2 XXX" CdDirReussi= "cd "$dir echo "3 XXX" CdDirReussi= `cd $dir` echo "4 XXX" CdDirReussi= echo "cd "$dir echo "5 XXX" CdDirReussi= echo `cd $dir` echo "6 XXX" 8<------------------------------------ et à l'exécution ça donne: 8<------------------------------------ 1 XXX <-- [2] Que Dalle 2 XXX /usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type 3 XXX 4 XXX cd /mnt/win 5 XXX
6 XXX 8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas dans un script [2].
C'est un comportement normal du bash et de tout shell en général ... Quand tu exécutes ton script tu lances un nouveau shell. La commande "cd" reste propre à ce nouveau shell (le cd s'exécute dans ce nouveau shell). Quand tu quittes le script tu reviens au contexte initial (ton xterm avec l'environnement de départ).
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd" et le nom du répertoire par exemple: bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre remarque que dans un xterm le message d'erreur previent de bash alors que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me met le "cd" en jaune ? "cd" serait une commande réservée dans les scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ? Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que j'ai récupérée sur le net) ?
Merci de m'avoir lu...
Philippe
--
dvips -o $@ $< Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :)) -+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
Philippe Delsol
Philippe Delsol a écrit dans le message <3ff7eb5a$0$22307$...
Hugolino a écrit dans le message ...
Bonjour à tous
Dans un script bash, je veux à la fin du script que l'utilisateur se retrouve dans un répertoire donné. Donc dans mon script, (la variable $dir contenant "/mnt/win") je mets:
[snip]
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas dans un script [2].
C'est un comportement normal du bash et de tout shell en général ... Quand tu exécutes ton script tu lances un nouveau shell. La commande "cd" reste propre à ce nouveau shell (le cd s'exécute dans ce nouveau shell). Quand tu quittes le script tu reviens au contexte initial (ton xterm avec l'environnement de départ).
Ooopps j'ai oublié la solution !!!
Il faut : - enlever la première ligne du script qui doit commencer par "#!/bin/bash" - et faire un "source" du script dans le xterm : #source mon_script Dans ce cas ça ne relance pas un nouveau shell, le script est exécuté dans l'environnement initial et le cd se fait dans cet environnement.
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd" et le nom du répertoire par exemple: bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre remarque que dans un xterm le message d'erreur previent de bash alors que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me met le "cd" en jaune ? "cd" serait une commande réservée dans les scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ? Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que j'ai récupérée sur le net) ?
Merci de m'avoir lu...
Philippe
--
dvips -o $@ $< Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :)) -+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
Philippe Delsol a écrit dans le message
<3ff7eb5a$0$22307$626a54ce@news.free.fr>...
Hugolino a écrit dans le message ...
Bonjour à tous
Dans un script bash, je veux à la fin du script que l'utilisateur se
retrouve dans un répertoire donné. Donc dans mon script, (la variable
$dir contenant "/mnt/win") je mets:
[snip]
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas
dans un script [2].
C'est un comportement normal du bash et de tout shell en général ...
Quand tu exécutes ton script tu lances un nouveau shell.
La commande "cd" reste propre à ce nouveau shell (le cd s'exécute dans ce
nouveau shell).
Quand tu quittes le script tu reviens au contexte initial (ton xterm avec
l'environnement de départ).
Ooopps j'ai oublié la solution !!!
Il faut :
- enlever la première ligne du script qui doit commencer par "#!/bin/bash"
- et faire un "source" du script dans le xterm : #source mon_script
Dans ce cas ça ne relance pas un nouveau shell, le script est exécuté dans
l'environnement initial et le cd se fait dans cet environnement.
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers
un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd"
et le nom du répertoire par exemple:
bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre
remarque que dans un xterm le message d'erreur previent de bash alors
que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me
met le "cd" en jaune ? "cd" serait une commande réservée dans les
scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ?
Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et
pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que
j'ai récupérée sur le net) ?
Merci de m'avoir lu...
Philippe
--
dvips -o $@ $<
Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :))
-+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
Philippe Delsol a écrit dans le message <3ff7eb5a$0$22307$...
Hugolino a écrit dans le message ...
Bonjour à tous
Dans un script bash, je veux à la fin du script que l'utilisateur se retrouve dans un répertoire donné. Donc dans mon script, (la variable $dir contenant "/mnt/win") je mets:
[snip]
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas dans un script [2].
C'est un comportement normal du bash et de tout shell en général ... Quand tu exécutes ton script tu lances un nouveau shell. La commande "cd" reste propre à ce nouveau shell (le cd s'exécute dans ce nouveau shell). Quand tu quittes le script tu reviens au contexte initial (ton xterm avec l'environnement de départ).
Ooopps j'ai oublié la solution !!!
Il faut : - enlever la première ligne du script qui doit commencer par "#!/bin/bash" - et faire un "source" du script dans le xterm : #source mon_script Dans ce cas ça ne relance pas un nouveau shell, le script est exécuté dans l'environnement initial et le cd se fait dans cet environnement.
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd" et le nom du répertoire par exemple: bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre remarque que dans un xterm le message d'erreur previent de bash alors que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me met le "cd" en jaune ? "cd" serait une commande réservée dans les scripts ? (Cherché dans la doc, pas trouvé)
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ? Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que j'ai récupérée sur le net) ?
Merci de m'avoir lu...
Philippe
--
dvips -o $@ $< Faut faire gffe de pas te couper avec ton truc, t'as mis des ciseaux ($<)
partout :)) -+- Dom in Guide du linuxien pervers - "J'aime pas les Makefile !" -+-
David LE BOURGEOIS
Bonjour à tous
Bonsoir.
Dans un script bash, je veux à la fin du script que l'utilisateur se retrouve dans un répertoire donné. Donc dans mon script, (la variable $dir contenant "/mnt/win") je mets: 8<------------------------------------ ChangeDir="cd"$dir echo "1 XXX" CdDirReussi= `echo $ChangeDir ` echo "2 XXX" 8<------------------------------------
Et à l'exécution j'ai: 8<------------------------------------ 1 XXX /usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type 2 XXX 8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir, donc je corrige (ChangeDir="cd "$dir) Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm: 8<------------------------------------ 08:50pm ~ $ dir="/mnt/win" 08:51pm ~ $ echo $dir /mnt/win 08:51pm ~ $ ChangeDir= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type 08:51pm ~ $ dir="/mnt/win" 08:52pm ~ $ echo $dir /mnt/win 08:52pm ~ $ CdDirReussi= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
Ici, bash renvoie une erreur et signale qu'il ne trouve pas le fichier 'cd /mnt/win', qui ne doit durement pas exister.
Donc j'ai bidouillé, et j'ai essayé dans mon script: 8<------------------------------------ echo "1 XXX" cd $dir <-- [2] echo "2 XXX" CdDirReussi= "cd "$dir echo "3 XXX" CdDirReussi= `cd $dir` echo "4 XXX" CdDirReussi= echo "cd "$dir echo "5 XXX" CdDirReussi= echo `cd $dir` echo "6 XXX" 8<------------------------------------ et à l'exécution ça donne: 8<------------------------------------ 1 XXX <-- [2] Que Dalle 2 XXX /usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type 3 XXX 4 XXX cd /mnt/win 5 XXX
6 XXX 8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas dans un script [2].
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd" et le nom du répertoire par exemple: bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Dans ce cas, bash signale une erreur, puis c'est autour de cd d'annoncer un incident. Ce n'est pas du tout la même erreur rencontrée plus haut. C'est là que les : font la différence.
Exemple :
~/tmp $ pwd /home/famille/david/tmp ~/tmp $ "cd /mnt/" zsh: aucun fichier ou répertoire de ce type: cd /mnt/ ~/tmp $ eval "cd /mnt/" /mnt $ pwd /mnt
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre remarque que dans un xterm le message d'erreur previent de bash alors que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me met le "cd" en jaune ? "cd" serait une commande réservée dans les scripts ? (Cherché dans la doc, pas trouvé)
~/tmp $ which cd cd: shell built-in command
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ? Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que j'ai récupérée sur le net) ?
Dans un script bash, je veux à la fin du script que l'utilisateur se
retrouve dans un répertoire donné. Donc dans mon script, (la variable
$dir contenant "/mnt/win") je mets:
8<------------------------------------
ChangeDir="cd"$dir
echo "1 XXX"
CdDirReussi= `echo $ChangeDir `
echo "2 XXX"
8<------------------------------------
Et à l'exécution j'ai:
8<------------------------------------
1 XXX
/usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type
2 XXX
8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir,
donc je corrige (ChangeDir="cd "$dir)
Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas
non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes
foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va
aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm:
8<------------------------------------
08:50pm hugo@Deborah ~ $ dir="/mnt/win"
08:51pm hugo@Deborah ~ $ echo $dir
/mnt/win
08:51pm hugo@Deborah ~ $ ChangeDir= "cd "$dir
bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
08:51pm hugo@Deborah ~ $ dir="/mnt/win"
08:52pm hugo@Deborah ~ $ echo $dir
/mnt/win
08:52pm hugo@Deborah ~ $ CdDirReussi= "cd "$dir
bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
Ici, bash renvoie une erreur et signale qu'il ne trouve pas le fichier
'cd /mnt/win', qui ne doit durement pas exister.
Donc j'ai bidouillé, et j'ai essayé dans mon script:
8<------------------------------------
echo "1 XXX"
cd $dir <-- [2]
echo "2 XXX"
CdDirReussi= "cd "$dir
echo "3 XXX"
CdDirReussi= `cd $dir`
echo "4 XXX"
CdDirReussi= echo "cd "$dir
echo "5 XXX"
CdDirReussi= echo `cd $dir`
echo "6 XXX"
8<------------------------------------
et à l'exécution ça donne:
8<------------------------------------
1 XXX <-- [2] Que Dalle
2 XXX
/usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type
3 XXX
4 XXX
cd /mnt/win
5 XXX
6 XXX
8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas
dans un script [2].
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers
un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd"
et le nom du répertoire par exemple:
bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Dans ce cas, bash signale une erreur, puis c'est autour de cd d'annoncer
un incident.
Ce n'est pas du tout la même erreur rencontrée plus haut. C'est là que
les : font la différence.
Exemple :
david@abeille ~/tmp $ pwd
/home/famille/david/tmp
david@abeille ~/tmp $ "cd /mnt/"
zsh: aucun fichier ou répertoire de ce type: cd /mnt/
david@abeille ~/tmp $ eval "cd /mnt/"
david@abeille /mnt $ pwd
/mnt
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre
remarque que dans un xterm le message d'erreur previent de bash alors
que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me
met le "cd" en jaune ? "cd" serait une commande réservée dans les
scripts ? (Cherché dans la doc, pas trouvé)
david@abeille ~/tmp $ which cd
cd: shell built-in command
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ?
Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et
pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que
j'ai récupérée sur le net) ?
Dans un script bash, je veux à la fin du script que l'utilisateur se retrouve dans un répertoire donné. Donc dans mon script, (la variable $dir contenant "/mnt/win") je mets: 8<------------------------------------ ChangeDir="cd"$dir echo "1 XXX" CdDirReussi= `echo $ChangeDir ` echo "2 XXX" 8<------------------------------------
Et à l'exécution j'ai: 8<------------------------------------ 1 XXX /usr/local/bin/Mo: cd/mnt/win: Aucun fichier ou répertoire de ce type 2 XXX 8<------------------------------------
"Idiot me dis-je, j'ai oublié l'espace entre "cd" et la variable $dir, donc je corrige (ChangeDir="cd "$dir) Et là à l'excution, je n'ai plus d'erreur, mais le script ne cherche pas non plus à exécuter le changement de répertoire.
On a l'impression que le shell ne cherche à exécuter que les commandes foireuses qu'on peut lui passer mais pas les bonnes ! C'est pas ça qui va aider les newbies (neuneu ?) comme moi.
J'ai essayé ça dans un xterm: 8<------------------------------------ 08:50pm ~ $ dir="/mnt/win" 08:51pm ~ $ echo $dir /mnt/win 08:51pm ~ $ ChangeDir= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type 08:51pm ~ $ dir="/mnt/win" 08:52pm ~ $ echo $dir /mnt/win 08:52pm ~ $ CdDirReussi= "cd "$dir bash: cd /mnt/win: Aucun fichier ou répertoire de ce type
Ici, bash renvoie une erreur et signale qu'il ne trouve pas le fichier 'cd /mnt/win', qui ne doit durement pas exister.
Donc j'ai bidouillé, et j'ai essayé dans mon script: 8<------------------------------------ echo "1 XXX" cd $dir <-- [2] echo "2 XXX" CdDirReussi= "cd "$dir echo "3 XXX" CdDirReussi= `cd $dir` echo "4 XXX" CdDirReussi= echo "cd "$dir echo "5 XXX" CdDirReussi= echo `cd $dir` echo "6 XXX" 8<------------------------------------ et à l'exécution ça donne: 8<------------------------------------ 1 XXX <-- [2] Que Dalle 2 XXX /usr/local/bin/Mo: cd /mnt/win: Aucun fichier ou répertoire de ce type 3 XXX 4 XXX cd /mnt/win 5 XXX
6 XXX 8<------------------------------------
Et le changement de répertoire ne se fait pas...
Donc on voit que la commande [1] qui marche dans un xterm, ne marche pas dans un script [2].
De plus, un oeil aguerri remarquera que si on cherche à faire un cd vers un répertoire inconnu, il y a un ":" dans le message d'erreur entre "cd" et le nom du répertoire par exemple: bash: cd: WinBlop: Aucun fichier ou répertoire de ce type
Dans ce cas, bash signale une erreur, puis c'est autour de cd d'annoncer un incident. Ce n'est pas du tout la même erreur rencontrée plus haut. C'est là que les : font la différence.
Exemple :
~/tmp $ pwd /home/famille/david/tmp ~/tmp $ "cd /mnt/" zsh: aucun fichier ou répertoire de ce type: cd /mnt/ ~/tmp $ eval "cd /mnt/" /mnt $ pwd /mnt
Et en oeil de plus en plus aguerri par l'énervement de ne pas comprendre remarque que dans un xterm le message d'erreur previent de bash alors que dans mon script il provient de '/usr/local/bin/Mo' (mon script)
Le problème vient-il du fait que sous vim la coloration syntaxique me met le "cd" en jaune ? "cd" serait une commande réservée dans les scripts ? (Cherché dans la doc, pas trouvé)
~/tmp $ which cd cd: shell built-in command
Bon "un neuneu est un newbie qui ne lit pas la doc", on est d'accord ? Mais comment appelle-t-on un newbie qui n'a pas la bonne doc (et pourtant j'ai 'Linux in a Nutshell', 'Le Système Linux' et de la doc que j'ai récupérée sur le net) ?