Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/06/2016, à 15: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, à 15:57

kholo

Re : Impossible d'éxécuter un script simple

salut,
./ remplace bash

./hello.sh

Hors ligne

#3 Le 16/06/2016, à 16: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, à 16: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, à 17: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, à 17: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" sad


Le mensonge donne des fleurs, jamais de fruits (proverbe africain)

Hors ligne

#7 Le 16/06/2016, à 17:37

Rufus T. Firefly

Re : Impossible d'éxécuter un script simple

Orang utan a écrit :

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, à 17: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, à 17: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, à 17: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, à 17:59)

Hors ligne

#10 Le 16/06/2016, à 18: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, à 18: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, à 18: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) mad


Le mensonge donne des fleurs, jamais de fruits (proverbe africain)

Hors ligne

#12 Le 16/06/2016, à 18: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, à 18: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, à 19: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, à 19: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, à 19: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, à 19: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, à 20: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