#1 Le 16/06/2016, à 14:49
- Orang utan
Impossible d'éxécuter un script simple
Bonjour,
je suis sur un Linux pratique d'initiation au shell et je rencontre un problème.
Il s'agit d’exécuter un script simple à partir d'un fichier, mais ça ne passe pas, du moins comme cela devrait.
Donc fichier hello.sh (Permissions 760) :
#!/bin/bash
# Nous allons afficher un message !
echo "Hello GNU/Linux Pratique"
Et le retour est :
hello.sh : commande introuvable
Si je vire la première ligne du code et tape
bash hello.sh
ça fonctionne.
J'ai vérifié, bash est bien dans /bin
Où merde-je svp ?
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#2 Le 16/06/2016, à 14:57
- kholo
Re : Impossible d'éxécuter un script simple
salut,
./ remplace bash
./hello.sh
Hors ligne
#3 Le 16/06/2016, à 15:02
- Orang utan
Re : Impossible d'éxécuter un script simple
Merci, mais normalement la première ligne du script doit permettre de s'affranchir de ce ./ ou de taper bash, or cela ne fonctionne pas, bien que le chemin soit valide.
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#4 Le 16/06/2016, à 15:32
- soshy
Re : Impossible d'éxécuter un script simple
La premiere ligne du script permet de definir avec quel shell le script va (ou devrait) etre execute, ksh csh bash ...
Si tu veux t'affranchir de ./ pour executer un script, son repertoire doit etre dans le PATH.
Hors ligne
#5 Le 16/06/2016, à 16:10
- Hizoka
Re : Impossible d'éxécuter un script simple
et si tu ne connais pas le PATH : https://doc.ubuntu-fr.org/path
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 16/06/2016, à 16:29
- Orang utan
Re : Impossible d'éxécuter un script simple
J'ai changé le PATH, mais cette solution, comme celle donnée précédemment, fonctionne à condition de virer la première ligne de code.
Cela n'explique pas pourquoi cette première ligne donne :
hello.sh : commande introuvable
J'ai essayé #!bash (puisque /bin est dans le PATH) ou bien #!/bin/sh (trouvé dans d'autres fichiers *.sh) mais j'ai toujours "commande introuvable"
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#7 Le 16/06/2016, à 16:37
- Rufus T. Firefly
Re : Impossible d'éxécuter un script simple
J'ai changé le PATH
Ce n'est pas une bonne idée... Il vaut mieux déplacer ton script par exemple dans /usr/local/bin qui est prévu pour ça et qui est déjà dans le path d'origine. Et pour les droits, je mettrais plutôt 755...
Edit : PATH est absolument crucial pour le fonctionnement du système. La moindre erreur et il n'y a plus rien qui fonctionne, peut-être pas même la possibilité de modifier PATH pour corriger l'erreur...
Dernière modification par Rufus T. Firefly (Le 16/06/2016, à 16:46)
La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme
Hors ligne
#8 Le 16/06/2016, à 16:51
- Orang utan
Re : Impossible d'éxécuter un script simple
Bizarrement, le PATH est revenu à son état initial sans mon intervention, je suppute qu'il était temporairement lié au terminal qui l'avait modifié.
Le chmod 755 ne change rien.
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#9 Le 16/06/2016, à 16:57
- soshy
Re : Impossible d'éxécuter un script simple
iMac-de-moi:scripts moi$ ls -l
-rwxr-xr-x 1 moi staff 12 16 jui 16:46 test.sh
iMac-de-moi:scripts moi$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin
iMac-de-moi:scripts moi$ test.sh
-bash: test.sh: command not found
iMac-de-moi:scripts moi$ ./test.sh
hello
iMac-de-moi:scripts moi$ PATH=$PATH:$PWD
iMac-de-moi:scripts moi$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin:/Users/moi/Documents/scripts
iMac-de-moi:scripts moi$ test.sh
hello
iMac-de-moi:scripts moi$ cat test.sh
#!/bin/bash
echo hello
iMac-de-moi:scripts moi$
Je suis sur osx, mais a priori il n'y a pas de raison que ca change grand chose...
PS : modifier le path comme je l'ai fait ici n'est valable que pour ce terminal, le temps qu'il est ouvert.
Dernière modification par soshy (Le 16/06/2016, à 16:59)
Hors ligne
#10 Le 16/06/2016, à 17:09
- Rufus T. Firefly
Re : Impossible d'éxécuter un script simple
Copie dans /usr/local/bin (l'option -a conserve les droits)
rufus@jessie64-kde:~/Scripts$ sudo cp -a hello.sh /usr/local/bin/
rufus@jessie64-kde:~/Scripts$ ls -la /usr/local/bin/
total 24
drwxrwsr-x 2 root staff 4096 juin 16 18:01 .
drwxrwsr-x 10 root staff 4096 juin 2 21:47 ..
-rwxr-xr-x 1 rufus rufus 80 juin 16 18:01 hello.sh
Exécution dans le répertoire /home/rufus
rufus@jessie64-kde:~$ hello.sh
Hello GNU/Linux Pratique
Dernière modification par Rufus T. Firefly (Le 16/06/2016, à 17:13)
La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme
Hors ligne
#11 Le 16/06/2016, à 17:19
- Orang utan
Re : Impossible d'éxécuter un script simple
It works, merci Rufus, ce point nébuleux n'est pas abordé dans Linux Pratique (HS n°27)
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#12 Le 16/06/2016, à 17:52
- kholo
Re : Impossible d'éxécuter un script simple
NB : il est possible de créer un dossier bin dans le dossier perso
dans les distrib .buntu ce dossier est ajouté automatiquement dans PATH
Hors ligne
#13 Le 16/06/2016, à 17:52
- Rufus T. Firefly
Re : Impossible d'éxécuter un script simple
Ça n'est pas nébuleux. Si tu veux exécuter un script, bash le cherche dans le PATH. Donc il le trouve s'il est par exemple dans /usr/local/bin. S'il est ailleurs, hors du PATH, il ne le trouve pas. Mais tu peux lui indiquer de chercher dans le répertoire courant en lançant non pas script.sh mais ./script.sh. Le point-slash sert à ça. Du coup il le trouve...
La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme
Hors ligne
#14 Le 16/06/2016, à 18:04
- Orang utan
Re : Impossible d'éxécuter un script simple
Pourtant leur exemple se passe dans le rép. perso, qui n'est pas dans le PATH, ils devraient donc aborder ce point.
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#15 Le 16/06/2016, à 18:07
- Rufus T. Firefly
Re : Impossible d'éxécuter un script simple
Ah mais ça... La vulgarisation est un art difficile et on pense rarement à tout...
Si tu veux te plonger dans bash : la bible de bash
Dernière modification par Rufus T. Firefly (Le 16/06/2016, à 18:11)
La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme
Hors ligne
#16 Le 16/06/2016, à 18:38
- Orang utan
Re : Impossible d'éxécuter un script simple
Attend, faut que je finisse le HS27, puis j'attaque le HS32 et il me semble qu'il y en a encore un autre après...:)
Le mensonge donne des fleurs, jamais de fruits (proverbe africain)
Hors ligne
#17 Le 16/06/2016, à 19:58
- Hizoka
Re : Impossible d'éxécuter un script simple
Rufus T. Firefly => +1 cette bible est excellente !
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne