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 09/11/2007, à 18:57

®om

[Résolu] à€ quoi sert précisément #!/bin/sh

Salut,

Dans les scripts shell, à  quoi sert précisément la première ligne #!/bin/sh ?
Que fait le # (un commentaire je pense), que fait le ! et pourquoi faut-il préciser /bin/sh? (sans doute pour le type de shell à  utiliser lorsque le fichier est exécutable, mais je ne comprends pas trop la syntaxe)

Et ça fait quoi si on ne met pas cette ligne?

Merci de m'éclairer smile

Dernière modification par ®om (Le 09/11/2007, à 19:11)

Hors ligne

#2 Le 09/11/2007, à 19:08

goodluck

Re : [Résolu] à€ quoi sert précisément #!/bin/sh

Salut,

La syntaxe c'est une affaire de convention, pas de raison smile

Si tu ne mets pas cette ligne alors ce n'est pas un fichier batch big_smile


Amicalement, Gerard ;)
http://counter.li.org/cgi-bin/certificate.cgi/302199
http://www.worldcommunitygrid.org/

Hors ligne

#3 Le 09/11/2007, à 19:11

®om

Re : [Résolu] à€ quoi sert précisément #!/bin/sh

http://www.hsrl.rutgers.edu/ug/shell_help.html

#!/bin/sh
All Bourne Shell scripts should begin with the sequence

    #!/bin/sh

From the man page for exec(2):

"On the first line of an interpreter script, following the "#!", is the name of a program which should be used to interpret the contents of the file. For instance, if the first line contains "#! /bin/sh", then the con- tents of the file are executed as a shell script."

You can get away without this, but you shouldn't. All good scripts state the interpretor explicitly. Long ago there was just one (the Bourne Shell) but these days there are many interpretors -- Csh, Ksh, Bash, and others.

Bon bah ça répond à ma question...
cool

Hors ligne

#4 Le 09/11/2007, à 19:29

ZondeR

Re : [Résolu] à€ quoi sert précisément #!/bin/sh

Je me permets un petit complément d'info en espérant ne pas dire de bêtises.

Si un script ne commence pas par #!/bin/sh (ou un truc qui ressemble), alors chaque ligne du script sera exécuté dans le shell o๠le script a été lancé. Donc, il va probablement marché.

Commencé son script par, par exemple #!/bin/bash, c'est ouvrir un autre shell dans le shell et donc s'assurer que les commandes du script seront interprétées par un bash.

si tu fais:

ls -l /bin/sh

tu verras que c'est un lien vers le shell par défaut: dash. Sur un autre ordinateur, ça pourrait être un lien vers csh, ce qui pourrait faire que tu script ne marche pas chez quelqu'un d'autre quand même.

Hors ligne