[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [un peu HS] sha-bang



steve <dlist@bluewin.ch> a écrit :

> Bonjour,
>
> Je suis en train d'expliquer les scripts sous *nix à un débutant. Je
> dois donc passer par le début à savoir le sha-bang (#!) suivi du chemin
> absolu de l'interpréteur de commande (/bin/sh par exemple). Je croyais que
> cette première ligne était *obligatoire* pour que le script s'exécute.
> Or le script suivant :
>
> <début script>
>
> echo "Ton nom ?"
> read nom
> echo "Ton nom est $nom"
>
> <fin script>
>
> fonctionne si je le lance par
>
> 1) sh script.sh et script.sh n'est pas exécutable
>
> 2) ./script.sh et script.sh est exécutable
>
> Donc dans les deux cas sans le sha-bang initial.
>
> Et là je suis embêté pour expliquer le pourquoi du comment.
>
> Pourriez-vous éclairer ma lanterne ?
Parce que les commandes que tu lances dans ton script sont des commandes
shell... que tu lances à partir d'un shell.

En l'occurrence, pour un script python, par exemple, ça ne marcherait
pas avec ce « sha-bang » : il lui faut en un spécifique.

1) $ cat foo.py
   print "Hello World!"

   $ python foo.py
   Hello World!

2) $ cat bar.py
   #! /usr/bin/python
   print "Hello World!"
   
   $ chmod +x bar.py
   $ ./bar.py
   Hello World!


Conclusion : tjrs avoir le réflexe de mettre le bon « sha-bang » en
début de script. Shell ou pas.

-- 
Fred


Reply to: