Pages : 1
#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
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
Si tu ne mets pas cette ligne alors ce n'est pas un fichier batch
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...
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
Pages : 1