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 ?
Merci d'avance
--
Steve
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Bortzmeyer
On Wed, Jul 02, 2008 at 09:12:45AM +0200, steve wrote a message of 41 lines which said:
Je croyais que cette première ligne était *obligatoire* pour que le script s'exécute.
Non.
2) ./script.sh et script.sh est exécutable
Donc dans les deux cas sans le sha-bang initial.
/bin/sh est l'interpréteur par défaut.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On Wed, Jul 02, 2008 at 09:12:45AM +0200,
steve <dlist@bluewin.ch> wrote
a message of 41 lines which said:
Je croyais que cette première ligne était *obligatoire* pour que le
script s'exécute.
Non.
2) ./script.sh et script.sh est exécutable
Donc dans les deux cas sans le sha-bang initial.
/bin/sh est l'interpréteur par défaut.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
On Wed, Jul 02, 2008 at 09:12:45AM +0200, steve wrote a message of 41 lines which said:
Je croyais que cette première ligne était *obligatoire* pour que le script s'exécute.
Non.
2) ./script.sh et script.sh est exécutable
Donc dans les deux cas sans le sha-bang initial.
/bin/sh est l'interpréteur par défaut.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
David Soulayrol
Le mercredi 02 juillet 2008 à 09:12 +0200, steve 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
Le script est simplement interprété par le shell qui le lance; sh dans le premier cas, le shell courant dans le second cas. La ligne she-bang permet d'indiquer le programme qui devrait être utilisé pour lire le script. En son absence, le shell essaie tout seul.
Ici le script est un script shell. Écrit un petit bout de perl ou de python, ou autre. Tu vas voir que si tu cherches à l'invoquer sans she-bang, le shell va t'insulter copieusement.
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 ?
Merci d'avance
De rien.
-- David.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le mercredi 02 juillet 2008 à 09:12 +0200, steve 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
Le script est simplement interprété par le shell qui le lance; sh dans
le premier cas, le shell courant dans le second cas. La ligne she-bang
permet d'indiquer le programme qui devrait être utilisé pour lire le
script. En son absence, le shell essaie tout seul.
Ici le script est un script shell. Écrit un petit bout de perl ou de
python, ou autre. Tu vas voir que si tu cherches à l'invoquer sans
she-bang, le shell va t'insulter copieusement.
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 ?
Merci d'avance
De rien.
--
David.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Le mercredi 02 juillet 2008 à 09:12 +0200, steve 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
Le script est simplement interprété par le shell qui le lance; sh dans le premier cas, le shell courant dans le second cas. La ligne she-bang permet d'indiquer le programme qui devrait être utilisé pour lire le script. En son absence, le shell essaie tout seul.
Ici le script est un script shell. Écrit un petit bout de perl ou de python, ou autre. Tu vas voir que si tu cherches à l'invoquer sans she-bang, le shell va t'insulter copieusement.
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 ?
Merci d'avance
De rien.
-- David.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Stephane Bortzmeyer
On Wed, Jul 02, 2008 at 09:29:11AM +0200, David Soulayrol wrote a message of 53 lines which said:
le shell courant dans le second cas.
Inexact. C'est /bin/sh qui est appelé s'il n'y a pas de she-bang, pas le shell courant.
Exemple, je suis en zsh :
% echo $ZSH_VERSION 4.3.6
Je mets cette même commande dans un script sans she-bang, je le lance avec zsh, puis avec le shell par défaut :
% zsh monscript 4.3.6
% ./monscript
%
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On Wed, Jul 02, 2008 at 09:29:11AM +0200,
David Soulayrol <dsoulayrol@free.fr> wrote
a message of 53 lines which said:
le shell courant dans le second cas.
Inexact. C'est /bin/sh qui est appelé s'il n'y a pas de she-bang, pas
le shell courant.
Exemple, je suis en zsh :
% echo $ZSH_VERSION
4.3.6
Je mets cette même commande dans un script sans she-bang, je le lance
avec zsh, puis avec le shell par défaut :
% zsh monscript
4.3.6
% ./monscript
%
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
On Wed, Jul 02, 2008 at 09:29:11AM +0200, David Soulayrol wrote a message of 53 lines which said:
le shell courant dans le second cas.
Inexact. C'est /bin/sh qui est appelé s'il n'y a pas de she-bang, pas le shell courant.
Exemple, je suis en zsh :
% echo $ZSH_VERSION 4.3.6
Je mets cette même commande dans un script sans she-bang, je le lance avec zsh, puis avec le shell par défaut :
% zsh monscript 4.3.6
% ./monscript
%
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
David Soulayrol
Le mercredi 02 juillet 2008 à 10:48 +0200, Stephane Bortzmeyer a écrit :
On Wed, Jul 02, 2008 at 09:29:11AM +0200, David Soulayrol wrote a message of 53 lines which said:
> le shell courant dans le second cas.
Inexact. C'est /bin/sh qui est appelé s'il n'y a pas de she-bang, pas le shell courant.
Désolé, je le pensais et je n'ai pas vérifié. Merci de la rectification.
-- David.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le mercredi 02 juillet 2008 à 10:48 +0200, Stephane Bortzmeyer a écrit :
On Wed, Jul 02, 2008 at 09:29:11AM +0200,
David Soulayrol <dsoulayrol@free.fr> wrote
a message of 53 lines which said:
> le shell courant dans le second cas.
Inexact. C'est /bin/sh qui est appelé s'il n'y a pas de she-bang, pas
le shell courant.
Désolé, je le pensais et je n'ai pas vérifié. Merci de la rectification.
--
David.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Le mercredi 02 juillet 2008 à 10:48 +0200, Stephane Bortzmeyer a écrit :
On Wed, Jul 02, 2008 at 09:29:11AM +0200, David Soulayrol wrote a message of 53 lines which said:
> le shell courant dans le second cas.
Inexact. C'est /bin/sh qui est appelé s'il n'y a pas de she-bang, pas le shell courant.
Désolé, je le pensais et je n'ai pas vérifié. Merci de la rectification.
-- David.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
steve
Le 2008-07-02, à 09:48:49 +0200, Stephane Bortzmeyer () a écrit :
Lignes : 24
On Wed, Jul 02, 2008 at 09:12:45AM +0200, steve wrote a message of 41 lines which said:
> Je croyais que cette première ligne était *obligatoire* pour que le > script s'exécute.
Non.
> 2) ./script.sh et script.sh est exécutable > > Donc dans les deux cas sans le sha-bang initial.
/bin/sh est l'interpréteur par défaut.
Après quelques recherches, j'ai trouvé ça dans [1] :
#! peut être omis si le script consiste seulement en un ensemble de commandes système génériques, sans utiliser de directives shell interne. Le second exemple, ci-dessus, requiert le #! initial car la ligne d'affectation des variables, lignesP, utilise une construction spécifique au shell.
Et comme l'un de vous :
Notez encore que #!/bin/sh appelle l'interpréteur shell par défaut, qui est /bin/bash sur une machine Linux.
C'est clair maintenant, merci à vous tous.
[1] http://abs.traduc.org/abs-5.3-fr/ch02.html
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le 2008-07-02, à 09:48:49 +0200, Stephane Bortzmeyer (stephane@sources.org) a écrit :
Lignes : 24
On Wed, Jul 02, 2008 at 09:12:45AM +0200,
steve <dlist@bluewin.ch> wrote
a message of 41 lines which said:
> Je croyais que cette première ligne était *obligatoire* pour que le
> script s'exécute.
Non.
> 2) ./script.sh et script.sh est exécutable
>
> Donc dans les deux cas sans le sha-bang initial.
/bin/sh est l'interpréteur par défaut.
Après quelques recherches, j'ai trouvé ça dans [1] :
#! peut être omis si le script consiste seulement en un ensemble de
commandes système génériques, sans utiliser de directives shell interne.
Le second exemple, ci-dessus, requiert le #! initial car la ligne
d'affectation des variables, lignesP, utilise une construction
spécifique au shell.
Et comme l'un de vous :
Notez encore que #!/bin/sh appelle
l'interpréteur shell par défaut, qui est /bin/bash sur une machine
Linux.
C'est clair maintenant, merci à vous tous.
[1] http://abs.traduc.org/abs-5.3-fr/ch02.html
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Le 2008-07-02, à 09:48:49 +0200, Stephane Bortzmeyer () a écrit :
Lignes : 24
On Wed, Jul 02, 2008 at 09:12:45AM +0200, steve wrote a message of 41 lines which said:
> Je croyais que cette première ligne était *obligatoire* pour que le > script s'exécute.
Non.
> 2) ./script.sh et script.sh est exécutable > > Donc dans les deux cas sans le sha-bang initial.
/bin/sh est l'interpréteur par défaut.
Après quelques recherches, j'ai trouvé ça dans [1] :
#! peut être omis si le script consiste seulement en un ensemble de commandes système génériques, sans utiliser de directives shell interne. Le second exemple, ci-dessus, requiert le #! initial car la ligne d'affectation des variables, lignesP, utilise une construction spécifique au shell.
Et comme l'un de vous :
Notez encore que #!/bin/sh appelle l'interpréteur shell par défaut, qui est /bin/bash sur une machine Linux.
C'est clair maintenant, merci à vous tous.
[1] http://abs.traduc.org/abs-5.3-fr/ch02.html
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Stephane Bortzmeyer
On Wed, Jul 02, 2008 at 11:38:23AM +0200, steve wrote a message of 46 lines which said:
Notez encore que #!/bin/sh appelle l'interpréteur shell par défaut, qui est /bin/bash sur une machine Linux.
Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation de bash (dans la prochaine version de Debian, ce sera ash).
Linux est un noyau, pas un système d'exploitation.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On Wed, Jul 02, 2008 at 11:38:23AM +0200,
steve <dlist@bluewin.ch> wrote
a message of 46 lines which said:
Notez encore que #!/bin/sh appelle
l'interpréteur shell par défaut, qui est /bin/bash sur une machine
Linux.
Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation
de bash (dans la prochaine version de Debian, ce sera ash).
Linux est un noyau, pas un système d'exploitation.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
On Wed, Jul 02, 2008 at 11:38:23AM +0200, steve wrote a message of 46 lines which said:
Notez encore que #!/bin/sh appelle l'interpréteur shell par défaut, qui est /bin/bash sur une machine Linux.
Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation de bash (dans la prochaine version de Debian, ce sera ash).
Linux est un noyau, pas un système d'exploitation.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
David Soulayrol
Le mercredi 02 juillet 2008 à 11:57 +0200, Stephane Bortzmeyer a écrit :
On Wed, Jul 02, 2008 at 11:38:23AM +0200, steve wrote a message of 46 lines which said:
> Notez encore que #!/bin/sh appelle > l'interpréteur shell par défaut, qui est /bin/bash sur une machine > Linux.
Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation de bash (dans la prochaine version de Debian, ce sera ash).
Ce ne sera pas dash ? :)
Bon, OK, pour dire ça, j'aurai mieux fait de me taire...
Linux est un noyau, pas un système d'exploitation.
-- David.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le mercredi 02 juillet 2008 à 11:57 +0200, Stephane Bortzmeyer a écrit :
On Wed, Jul 02, 2008 at 11:38:23AM +0200,
steve <dlist@bluewin.ch> wrote
a message of 46 lines which said:
> Notez encore que #!/bin/sh appelle
> l'interpréteur shell par défaut, qui est /bin/bash sur une machine
> Linux.
Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation
de bash (dans la prochaine version de Debian, ce sera ash).
Ce ne sera pas dash ? :)
Bon, OK, pour dire ça, j'aurai mieux fait de me taire...
Linux est un noyau, pas un système d'exploitation.
--
David.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Le mercredi 02 juillet 2008 à 11:57 +0200, Stephane Bortzmeyer a écrit :
On Wed, Jul 02, 2008 at 11:38:23AM +0200, steve wrote a message of 46 lines which said:
> Notez encore que #!/bin/sh appelle > l'interpréteur shell par défaut, qui est /bin/bash sur une machine > Linux.
Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation de bash (dans la prochaine version de Debian, ce sera ash).
Ce ne sera pas dash ? :)
Bon, OK, pour dire ça, j'aurai mieux fait de me taire...
Linux est un noyau, pas un système d'exploitation.
-- David.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Stephane Bortzmeyer
On Wed, Jul 02, 2008 at 02:11:33PM +0200, David Soulayrol wrote a message of 30 lines which said:
> Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation > de bash (dans la prochaine version de Debian, ce sera ash).
À, au fait, pour Ubuntu (bonnes explications) : <https://wiki.ubuntu.com/DashAsBinSh>
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On Wed, Jul 02, 2008 at 02:11:33PM +0200,
David Soulayrol <dsoulayrol@free.fr> wrote
a message of 30 lines which said:
> Encore un raccourci dangereux. Rien dans Linux n'impose l'utilisation
> de bash (dans la prochaine version de Debian, ce sera ash).
À, au fait, pour Ubuntu (bonnes explications) :
<https://wiki.ubuntu.com/DashAsBinSh>
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
À, au fait, pour Ubuntu (bonnes explications) : <https://wiki.ubuntu.com/DashAsBinSh>
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact