Mon script shell ne fait rien. - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 05-05-2008 à 19:38:52
Il y était je corrige, et la question reste en suspens.
Marsh Posté le 05-05-2008 à 19:51:46
C'est tout à fait normal que tu ne changes pas de répertoire dès que tu sors de ton script.
Quand tu lances un script avec la commande "./script.sh", le script va s'exécuter dans un processus fils,
quand il a fini et qu'il te rend la main tu reviens à ton environnement courant.
Pour écrire un script qui te change de répertoire dans ton processus courant, il faut écrire un script sans le shell bang de début de ligne,
tu vires ton "#!/bin/bash", ton script n'aura que la ligne "cd /home/sites/supercool/www/"
puis tu l'exécutes en faisant un "source script.sh" ou un ". script.sh", et y'a même pas besoin de le chmoder.
Marsh Posté le 05-05-2008 à 20:14:28
theredled a écrit :
|
Marsh Posté le 05-05-2008 à 20:43:09
demain j'essaye tout ça
Marsh Posté le 07-05-2008 à 10:19:47
Y'a rien à essayer, phileas_fox a tout dit. Tu ne peux pas, dans un process fil, changer le répertoire courant du processus père. Il faut faire le cd dans ton shell courant.
Marsh Posté le 07-05-2008 à 10:38:57
Bon bah alors je vais pas essayer
Marsh Posté le 07-05-2008 à 10:40:21
ps: comment ça se fait que parfois, ça marche quand même ?
(j'utilise ce script depuis un moment avec un user X (propriétaire du script), et ça marchait, c'est avec un user Y que ça marche plus)
Marsh Posté le 07-05-2008 à 10:43:44
euh si c'est juste pour changer de répertoire, on peut utiliser un alias.
ex.:
alias site='cd /home/sites/supercool/www/'
Marsh Posté le 07-05-2008 à 11:08:04
theredled a écrit : ps: comment ça se fait que parfois, ça marche quand même ? |
Ca n'a jamais pu marcher. Si ça marchait, c'est que tu faisais les choses différement. Par exemple tu appelais ton script avec ". /path/to/script" au lieu de "/path/to/script".
Marsh Posté le 07-05-2008 à 11:42:51
matafan a écrit :
|
Mon dossier des scripts était dans le $PATH, donc j'appelais simplement "script"...
D'ailleurs, ça marche encore (pour l'user X).
Marsh Posté le 07-05-2008 à 11:47:18
ogaby a écrit : euh si c'est juste pour changer de répertoire, on peut utiliser un alias. |
Certes, mais ça ne résout pas l'énygme
Marsh Posté le 07-05-2008 à 11:53:08
y'a pas d'énigme
Marsh Posté le 07-05-2008 à 12:13:28
black_lord a écrit : y'a pas d'énigme |
Alors explique-moi pourquoi ça marche avec mon user X, c'est pas sympa de me cacher ça
Marsh Posté le 25-09-2009 à 15:04:29
UP.
Exactement dans la même thématique.
J'ai ce script, avec tous droits d'éxecution et de lecture et propriétaire A
Code :
|
Ainsi que ce script, avec les mêmes droits et le même proprio :
Code :
|
Le premier fonctionne (ça change le dossier courant), le deuxième non
Pourquoi
Et non jveux pas utiliser d'alias
Marsh Posté le 25-09-2009 à 15:06:43
ça veut dire quoi "ça marche pas" ?
Marsh Posté le 25-09-2009 à 15:07:18
wedgeant a écrit : ça veut dire quoi "ça marche pas" ? |
Ca change pas le dossier courant.
Alors que l'autre oui.
Marsh Posté le 25-09-2009 à 15:08:31
et l'utilisateur qui exécute le script a les droits nécessaires pour se déplacer dans le dossier et ses dossiers parents ?
Marsh Posté le 25-09-2009 à 15:10:06
wedgeant a écrit : et l'utilisateur qui exécute le script a les droits nécessaires pour se déplacer dans le dossier et ses dossiers parents ? |
Ben oui, à la mano ça marche
Marsh Posté le 25-09-2009 à 15:12:06
au début de ton script, tu veux bien mettre "#! /bin/bash -vx" ?
Marsh Posté le 25-09-2009 à 15:12:38
ok
Marsh Posté le 25-09-2009 à 15:14:01
Citation :
|
Marsh Posté le 25-09-2009 à 15:15:31
Marsh Posté le 25-09-2009 à 15:16:16
N'est-ce pas
Marsh Posté le 25-09-2009 à 15:17:47
et si tu retires -vx ?
Marsh Posté le 25-09-2009 à 15:19:06
ReplyMarsh Posté le 25-09-2009 à 15:19:45
Sans le -vx
Citation :
|
Pareil qu'au départ quoi.
Marsh Posté le 25-09-2009 à 15:21:36
Par contre ça marche quand je fais
Citation :
|
Mais bon
(en plus je sais même pas ce que ça veux dire )
Marsh Posté le 25-09-2009 à 15:21:58
Riot a écrit : Et que tu le remets très vite après |
theredled a écrit : Pareil qu'au départ quoi. |
mais tu cherches à faire quoi en fait ?
parce que là ça marche, non ?
Marsh Posté le 25-09-2009 à 15:24:48
theredled a écrit : Par contre ça marche quand je fais
|
à tout hasard, que te dis: find / -iname '*odcd*' (en root)
Marsh Posté le 25-09-2009 à 15:25:20
wedgeant a écrit : |
même conclusion
Marsh Posté le 25-09-2009 à 15:28:44
wedgeant a écrit :
|
Euh, non
Je veux que ça me change le répertoire courant. Là je suis dans /home/scripts, et je reste dans /home/scripts
Comme s'il me lançait le script dans un processus parallèle. Mais juste ce script-là, pas l'autre qu'est quasi identique
Marsh Posté le 25-09-2009 à 15:33:06
theredled a écrit : |
mais il lance le script dans un processus parallèle
Marsh Posté le 25-09-2009 à 15:33:30
theredled a écrit : Euh, non |
de manière définitive ?
genre avant le script t'es dans /home/truc et après le script t'es dans /home/trique ?
Marsh Posté le 25-09-2009 à 15:34:03
black_lord a écrit : mais il lance le script dans un processus parallèle |
en plus
Spoiler : mais je gardais ça pour le coup de grace |
Marsh Posté le 25-09-2009 à 15:43:04
wedgeant a écrit :
|
Voilà
Comme le script n°1 qui fonctionne, tu vois
Marsh Posté le 25-09-2009 à 15:43:31
black_lord a écrit : |
Et le script n°1, pourquoi il marche ?
Marsh Posté le 25-09-2009 à 15:45:02
theredled a écrit : Comme le script n°1 qui fonctionne, tu vois |
euh, mais il devrait pas, justement
theredled a écrit : Et le script n°1, pourquoi il marche ? |
that, detective, is the right question
Marsh Posté le 05-05-2008 à 18:56:42
Hello
Voilà j'ai un script shell simple :
#!/bin/bash
cd /home/sites/supercool/www/
seulement voilou, parfois, je le lance, aucun message d'erreur, mais aucun changement de dossier non plus
Où est mon erreur
'rci
Message édité par theredled le 05-05-2008 à 19:39:01
---------------
Contes de fées en yaourt --- █ --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique