Bonsoir,
Je n'arrive pas à faire fonctionner un fichier bash "test.sh"
#!/bin/bash
echo abc
La console ne reconnais pas '#!/bin/bash'
Mais quand j'execute directement à la console :
/bin/bash test.sh
le fichier s'exécute sans problème ('abc' s'affiche)
Quelqu'un connaît-il la raison de ce comportement.
merci
Phildes
# Est-ce un fake?
Posté par Khâpin (site web personnel) . Évalué à 2.
le '#!/bin/bash' est là pour dire que ce script est à exécuter par bash (tu as aussi des 'scripts' perl, python, php, ou tu peux préférer sh, tcsh, zsh, etc.).
Ainsi, quand tu te donnes les droits d'exécution sur ce fichier, tu n'as qu'à taper "./test.sh", sans avoir à spécifier l'interpréteur.
'#!/bin/bash' n'est pas une commande du shell:
-Le # est là pour dire que, dans le fichier, ceci est un commentaire (# est utilisé pour introduire un commentaire dans pas mal de languages: bash/sh/..., gnuplot, php,... mais ce n'est pas universel: LaTeX utilise %, C le couple /* */, d'autres le !).
-Le ! indique à ton shell que ce qui suit désigne l'interpréteur.
Ceci est ton premier message sur le forum, j'essaye donc d'être indulgent, mais la prochaine fois, cherche un peu avant (c'est beaucoup plus court que de poster un message). Si tu cherches 'bash #!/bin/bash' dans Google, la deuxième entrée t'en apprend beaucoup plus que ce que je viens d'écrire.
Voilivoilou
[^] # Re: Est-ce un fake? : non pas forcément ...
Posté par tontonflingueur . Évalué à 2.
J'avais un fichier shell du même genre, disons hello.sh
> #!/bin/sh
> echo "hello world"
si je faisais
> ./hello.sh
J'obtenais
> No such file or directory
et si je faisais
> bash ./hello.sh
ça marchait. La raison ? Par une diablerie inexplicable, le fichier était au format DOS. Regarde dans la barre en bas de Vim si tu n'as pas marqué [dos] dans la barre en bas.
[^] # Re: Est-ce un fake? : non pas forcément ...
Posté par Sylvain (site web personnel) . Évalué à 1.
chmod +x bash.sh
[^] # Re: Est-ce un fake? : non pas forcément ...
Posté par phildes . Évalué à 2.
Désolé Khapin, ce n'est pas un fake, mais ma question n'était pas claire, je pense.
Je vais essayer de l'être.
------------------
Prérecquis :
------------------
Je connaissais le rôle de la 1ère ligne et des ses différents signes, j'avais fait des recherches sur Google ;-)
------------------
Question :
------------------
Pourquoi ça ne fonctionne pas ?
------------------
Description du problème :
------------------
A - préparation du fichier script.
1 - Fichier texte " test.sh" de 2 lignes, décrit ci-dessous :
#!/bin/bash
echo abc
2 - Valider la propriété/permission/executable (j'ai aussi essayé "chmod" comme me l'a conseillé Sylvain)
3 - Ajouter le chemin du fichier dans la variable PATH
B - Execution du script.
1 - Dans la console, j'écris : test.sh
Réponse : bad interpreter:Nosuch file or directory.
------------------
C - test1 :
1 - dans la console j'écris : /bin/bash test.sh : ca fonctionne.
>>' /bin/bash/' est donc bien présent et accessible.
D - test2 :
1 - je supprime la 1ère ligne du fichier, il ne reste que la commande "echo abc",
2 - dans la console j'écris : test.sh : ca fonctionne,
>> Ici, le script fonctionne sans avoir indiqué d'interpréteur.
------------------
Merci de votre aide
Phildes
[^] # Re: Est-ce un fake? : non pas forcément ...
Posté par tontonflingueur . Évalué à 1.
Tape
> xxd ./test.sh
ce qui nous donnera le dump en hexa du fichier et envoie le résultat ...
(installe xxd au besoin, ça vient avec vim, je crois ...)
A+
[^] # Re: Est-ce un fake? : non pas forcément ...
Posté par phildes . Évalué à 2.
En fait il 'agissait bien de fichiers DOS comme tu me l'as dit dans ton 1er post.
Merci beaucoup de ton aide.
Phildes
[^] # Re: Est-ce un fake? : non pas forcément ...
Posté par phildes . Évalué à 1.
----------début de message-----------
tu sent le CRLF toi ...
essaye avec vim pui joe
je suis sur qu un des deux montrera des ^M indicant la presence de 0x06 : les carrieg return si cheres a DOS ...
une fois ceux ci otes, ca marchera beaucoup mieux :)
AMHA
---------fin de message----------
C'était effectivement le problème comme dit plus haut ;-)
Phildes
[^] # Ceci est un fake ;-)
Posté par phildes . Évalué à 2.
Effectivement, merci pour ce charmant acceuil ;-)
> J'essaye donc d'être indulgent
Je n'ose imaginer quand vous ne l'êtes pas.
Grand Dieu ! Tout ceci à l'air très très sérieux !
> Si tu cherches "bash #!/bin/bash" dans Google,
> la deuxième entrée t'en appends baucoup plus...
Certainement, malheureusement elle est en allemand :-D
----------------------------------------
Désolé pour ce courrier [HS], Mais quand j'ai vu que la seconde entrée Google, conseillée par le très scrupuleux M khapin, était en allemand, j'ai pas résisté Hihi, Je suis resté très gamin.
----------------------------------------
Et encore un grand merci à ceux qui m'ont aidés en français.
Phildes
[^] # Re: Ceci est un fake ;-)
Posté par Khâpin (site web personnel) . Évalué à 2.
Si tu jettes un oeil aux question des forums, tu verras qu'il y a pas mal de 'primo-questionnants" qui posent des questions ici avant de réflechir ou de chercher. Je reconnais que ce n'est pas ton cas, mais ce n'est pas facile de deviner. La prochaine fois, pose ta question plus clairement dès le début, ou ne t'étonne pas qu'on la comprenne mal.
Pour ce qui est de google, chez moi il est en Français...
[^] # Re: Ceci est un fake ;-)
Posté par phildes . Évalué à 1.
> mais ta question n'était pas très claire
Effectivement, c'est pourquoi je ne suis pas venu chez toi avec un bazooka pour fair exploser ta baignoire ;-)
Je suis en faute aussi.
> Pour ce qui est de google, chez moi il est en Français
Diantre !
Et puis, en ces moments difficiles (cf brevet logiciel), je préfère cette relation cordiale entre les intervenants du libre. On a assez à faire avec les "hostiles" de Bruxelles..
Très cordialement.
Phildes
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.