Comande script et PATH

Résolu/Fermé
Night91 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 14 avril 2010 - 14 avril 2010 à 14:09
Night91 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 14 avril 2010 - 14 avril 2010 à 19:45
Bonjour, je débute en scripts sous linux, j'ai un soucis pour exécuter un script en donnant son nom (sans préciser le chemin ou sans taper "./" devant le nom du script)

Voici ce que je fais dans la console :

kevin@kevin:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
kevin@kevin:~$ export PATH=$PATH:/home/kevin/scripts
kevin@kevin:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kevin/scripts                                                                                       
kevin@kevin:~$ cd /home/kevin/scripts
kevin@kevin:~/scripts$ ls -l
total 8                     
-rwxr--r-- 1 kevin kevin 36 2010-04-11 22:50 test
-rwxr--r-- 1 kevin kevin 34 2010-04-11 22:50 test~
kevin@kevin:~/scripts$ chmod u+x test
kevin@kevin:~/scripts$ ls -l
total 8
-rwxr--r-- 1 kevin kevin 36 2010-04-11 22:50 test
-rwxr--r-- 1 kevin kevin 34 2010-04-11 22:50 test~
kevin@kevin:~/scripts$ ./test
Test
kevin@kevin:~/scripts$ test
kevin@kevin:~/scripts$ cat test
#! /bin/bash
echo "Test"
#kevin@kevin:~/scripts$
kevin@kevin:~/scripts$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kevin/scripts
kevin@kevin:~/scripts$ pwd
/home/kevin/scripts
kevin@kevin:~/scripts$ test
#kevin@kevin:~/scripts$


Voilà mon script qui affiche "Test" ne fonctionne que si je tape le chemin ou le "./" quand je suis dans le répertoire du script. Pourtant la variable PATh contient le chemin du répertoire contenant le script.
Ai je fais une erreur quelque part ? La synthaxe est bonne pourtant (enfin je crois)
Ai je oublié une manipulation ?
Quels sont les conditions pour que PATH fonctionne correctement?


A voir également:

5 réponses

debianhunter Messages postés 119 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 11 juillet 2010 24
Modifié par debianhunter le 14/04/2010 à 14:12
Bonjour,

test est deja dans /usr/bin/test. Renomme ton fichier et ca devrait marcher.

Cordialement,
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 avril 2010 à 14:16
Salut,

Je n'ai pas Linux sous la main ;-)
Affiche le résultat de
whereis test


Sous debian la commande test fait partie de paquet coreutils et il se trouve dans /usr/bin

Dans ton PATH /usr/bin est avant le répertoire /home/kevin/scripts , donc c'est celui de /usr/bin qui sera exécuter.

Tu peux essayer de mettre ton script dans /usr/local/bin pour voir.

0
Night91 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 14:19
Oui c'était ca ! Merci beaucoup, c'est vrai qu'il faut faire attention à la manière dont on nomme les fichiers... en tous cas encore merci pour ta réponse rapide et efficace ^^
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 avril 2010 à 14:28
Re,

Oups, j'ai oublié la commande interne bash ;-)

Mais cette fois ça marche avec l'histoire de nom, toutefois il faut tenir compte d'ordre de recherche dans PATH.
On peut avoir des applications avec le même nom (même si ce n'est pas judicieux) mais en ce cas il faut utiliser le chemin complet pour être sur d'exécuter la bonne commande.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Night91 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 19:45
Oké, merci pour l'info, je comprends beaucoup mieux. (en effet, j'avais un test dans /usr/bin )
0