script qui appelle un autre script ????? - Codes et scripts - Linux et OS Alternatifs
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=$PATHVolumes/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
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. |
Salut,
merci pour ta réponse.
en fait ce que je souhaite c'est faire l'équivalent de la commande DOS :
Call
Marsh Posté le 01-01-2008 à 16:20:21
Je n'y arrive pas
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
Marsh Posté le 01-01-2008 à 16:22:32
./toto
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
Marsh Posté le 01-01-2008 à 16:24:41
Ik12 a écrit : ./toto |
Merci Ik12, j'avais corrigé
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?
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.
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 ?
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.
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
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
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).
Marsh Posté le 01-01-2008 à 16:50:56
J'ai jamais fais de programmation moi Je sais pas trop comment ca marche. Mais ca me parait convaicant:
Code :
|
Edit: bah en fait, c'est ce que e_esprit a dit...
Marsh Posté le 01-01-2008 à 17:09:21
Ik12 a écrit : J'ai jamais fais de programmation moi Je sais pas trop comment ca marche. Mais ca me parait convaicant:
|
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à.?
Merci
Dexys
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).
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
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.
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. |
Oui au pire je peux faire cela.
Merci à tous et Bonne Année.
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.
du style ./test pour exécuter le fichier, j'ai tout essayé rrrrrrr
Merci pour votre aide
Dexys
---------------
Dexys