script qui appelle un autre script ?????

script qui appelle un autre script ????? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-01-2008 à 15:47:59    

Hello,
 
Bonne Année :-)
 
Je suis débutant en bash.
 
Voila j'ai un fichier "test" qui contien ces lignes :
#!/bin/bash
rm -r "/Volumes/folder_a/folder_b"  
cp -Rv "/Volumes/folder_a/folder_b/appli"  "/Volumes/autrepartition/appli"
 
ce fichier est dans : Volumes/Dexys/Datas/Programmation/Scripts/TestBash/bin
 
Dans : Volumes/Dexys/Datas/Programmation/Scripts/TestBash/ , j'ai un fichier "yo" qui doit éxécuter le fichier test
 
si j'écris dans "yo":
#!/bin/bash
"Volumes/Dexys/Datas/Programmation/Scripts/TestBash/bin/test"
 
le fichier s'éxécute.
 
Comment faire pour ne pas utiliser le chemin absolu.  :pfff:  
 
du style ./test pour exécuter le fichier, j'ai tout essayé rrrrrrr
 
 
Merci pour votre aide
 
 
Dexys
 
 
 
 
 


---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 15:47:59   

Reply

Marsh Posté le 01-01-2008 à 15:53:51    

./test signifie que tu exécutes un fichier dans . (c'est à dire le repertoire courant), ce qui n'est pas le cas à priori, à moins que tu ne forces le changement de repertoire via un cd /ton/rep/ou/y/a/test/ dans ton script, mais ce n'est pas terrible.
 
Ce que tu souhaites faire, en fait, c'est redéfinir ton PATH (variable d'environnement qui indique les chemins où les executables vont être cherchés), afin d'y rajouter le repertoire ou se trouve tes scripts.
export PATH=$PATH:/Volumes/Dexys/Datas/Programmation/Scripts/TestBash/bin
 
ensuite tu pourras appeler test en tapant simplement "test".
 
Mais je te déconseille de l'appeller ainsi (test), puisqu'un programme portant ce nom existe deja, donc tu risques d'avoir un conflit de nom ;)

Message cité 1 fois
Message édité par e_esprit le 01-01-2008 à 15:54:21

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 01-01-2008 à 16:01:09    

e_esprit a écrit :

./test signifie que tu exécutes un fichier dans . (c'est à dire le repertoire courant), ce qui n'est pas le cas à priori, à moins que tu ne forces le changement de repertoire via un cd /ton/rep/ou/y/a/test/ dans ton script, mais ce n'est pas terrible.
 
Ce que tu souhaites faire, en fait, c'est redéfinir ton PATH (variable d'environnement qui indique les chemins où les executables vont être cherchés), afin d'y rajouter le repertoire ou se trouve tes scripts.
export PATH=$PATH:/Volumes/Dexys/Datas/Programmation/Scripts/TestBash/bin
 
ensuite tu pourras appeler test en tapant simplement "test".
 
Mais je te déconseille de l'appeller ainsi (test), puisqu'un programme portant ce nom existe deja, donc tu risques d'avoir un conflit de nom ;)


Salut,
 
merci pour ta réponse.
en fait ce que je souhaite c'est faire l'équivalent de la commande DOS :  
 
Call


---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 16:20:21    

Je n'y arrive pas   :cry:  
 
Bin contient mes différents scripts
 
Yo est le fichier qui appelle ces scripts, yo et bin sont dans le même répertoire
 
voilà ce que j'ai écris dans yo :
 
#!/bin/bash  
cd "/Volumes/Dexys/Datas/Programmation/Scripts de Copie/Test Bash/bin"
toto
 
et j'ai un commande not found grrrrrrrrr


---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 16:22:32    

./toto


---------------
on est au 21 siècle plus person ne écrit correctement sur les forum ni sur msn ni sur les SMS.
Reply

Marsh Posté le 01-01-2008 à 16:23:01    

Bon ok j'ai fait une connerie
 
#!/bin/bash  
cd "/Volumes/Dexys Datas/Programmation/Scripts de Copie/Test Bash/bin"  
./toto
 
là c'est mieux. Mais j'ai pas compris ton export PATH=$PATH


---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 16:24:41    


Merci Ik12, j'avais corrigé  :pt1cable:
le ./toto

 

et en plus j'aais mis un slash dans mon chemin en trop :-( Désolé

 

Mais y a pas un moyen de ne pas se taper un CD, un truc plus direct?

 


Message édité par dexys le 01-01-2008 à 16:25:07

---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 16:26:49    

C'est sans doute a cause des espaces dans les noms. Essais de mettre des etoiles (*) a la place des espaces.

Message cité 1 fois
Message édité par Ik12 le 01-01-2008 à 16:27:23

---------------
on est au 21 siècle plus person ne écrit correctement sur les forum ni sur msn ni sur les SMS.
Reply

Marsh Posté le 01-01-2008 à 16:28:59    

Ik12 a écrit :

C'est sans doute a cause des espaces dans les noms. Essais de mettre des etoiles (*) a la place des espaces.


 
#!/bin/bash    
cd "/Volumes/Dexys Datas/Programmation/Scripts de Copie/Test Bash/bin"  
./toto  
 
Comme cela cela fonctionne. Mais je voudrais savoir si y a pas un moyen d'éviter de faire un CD ?


---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 16:33:01    

Le export PATH=$PATH, si j'ai bien compris, c'est que tu "exporte" le contenu de /Volumes/Dexys Datas/Programmation/Scripts de Copie/Test Bash/bin dans le repertoir courant. Ainsi, ton script pourras executer ce qui est dans /Volume/*/bin tout en etant dans le repertoire courant. Comme ca, t'aurais pas a faire de cd.


---------------
on est au 21 siècle plus person ne écrit correctement sur les forum ni sur msn ni sur les SMS.
Reply

Marsh Posté le 01-01-2008 à 16:33:01   

Reply

Marsh Posté le 01-01-2008 à 16:45:19    

Ik12 a écrit :

Le export PATH=$PATH, si j'ai bien compris, c'est que tu "exporte" le contenu de /Volumes/Dexys Datas/Programmation/Scripts de Copie/Test Bash/bin dans le repertoir courant. Ainsi, ton script pourras executer ce qui est dans /Volume/*/bin tout en etant dans le repertoire courant. Comme ca, t'aurais pas a faire de cd.


 
Je dois être complètement niais  :jap:  
 
Comment tu écris cette syntaxe ?
 
toujours en partant du script yo
:
#!/bin/bash  
cd "/Volumes/Dexys Datas/Programmation/Scripts de Copie/Test Bash/bin"
./toto
 
Ce que je comprends pas je peux pas utiliser du relatif plutôt que de l'absolu. Dans Test Bash, j'ai mon répertoire Bin et mon fichier yo, je peux pas lui dire va dans mon rep Bin et éxécute mon fichier toto, sans lui passer un cd de mon chemin complet ?
 
Merci à toi en tout cas


---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 16:49:19    

Ben le problème, c'est que quand tu executes yo, le chemin courant est le repertoire depuis lequel tu l'as appelé, et non pas le repertoire dans lequel il se trouve (je sais pas si la nuance est très claire).


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 01-01-2008 à 16:50:56    

J'ai jamais fais de programmation moi :D Je sais pas trop comment ca marche. Mais ca me parait convaicant:

Code :
  1. export PATH=$PATH:/Volumes/Dexys/Datas/Programmation/Scripts/TestBash/bin
 

Edit: bah en fait, c'est ce que e_esprit a dit...

Message cité 1 fois
Message édité par Ik12 le 01-01-2008 à 16:51:50

---------------
on est au 21 siècle plus person ne écrit correctement sur les forum ni sur msn ni sur les SMS.
Reply

Marsh Posté le 01-01-2008 à 17:09:21    

Ik12 a écrit :

J'ai jamais fais de programmation moi :D Je sais pas trop comment ca marche. Mais ca me parait convaicant:

Code :
  1. export PATH=$PATH:/Volumes/Dexys/Datas/Programmation/Scripts/TestBash/bin


 
Edit: bah en fait, c'est ce que e_esprit a dit...


 :??:  
 
Je pige pas l'intérêt de PATH=$PATH:"/Volumes/Dexys Datas/Programmation/Scripts de Copie/Test Bash/bin" ??
Je la mets où ctte syntaxe, j'ai essayé mais cela ne fonctionne pas........ :( e_esprit es tu là.?  :lol:  
 
 
Merci
 
Dexys


Message édité par dexys le 01-01-2008 à 17:09:41

---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 17:12:19    

Tu le tapes dans un shell, ou bien tu le mets dans ton ficher de démarrage de ton shell (~/.bashrc si c'est bash par exemple).


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 01-01-2008 à 17:24:26    

e_esprit a écrit :

Tu le tapes dans un shell, ou bien tu le mets dans ton ficher de démarrage de ton shell (~/.bashrc si c'est bash par exemple).


 
Ok merci à toi et à Ik12.
 
Mais cela ne répond pas à mon besoin. J'ai plusieurs répertoires, comme cela, et sur plusieurs machines qui n'ont pas le même path. Je voulais simplifier en utilisant du relatif, car l'arborescence /Programmation/Scripts de Copie/Test Bash/bin ne change jamais d'une machine à une autre et d'un répertoire à un autre, mais pas de l'absolu. C'est pas grave je vais me taper du CD, yo
 
Dexys


Message édité par dexys le 01-01-2008 à 17:26:19

---------------
Dexys
Reply

Marsh Posté le 01-01-2008 à 18:00:50    

Au pire tu modifies ta variables PATH au début de ton script pour y intégrer l'ensemble des répertoires succeptible de contenir des programmes que tu souhaites exécuter.
 
[:spamafote]


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 01-01-2008 à 18:04:07    

o'gure a écrit :

Au pire tu modifies ta variables PATH au début de ton script pour y intégrer l'ensemble des répertoires succeptible de contenir des programmes que tu souhaites exécuter.
 
[:spamafote]


Oui au pire je peux faire cela.
 
Merci à tous et Bonne Année. :bounce:


Message édité par dexys le 01-01-2008 à 18:06:36

---------------
Dexys
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed