Selon [EMAIL PROTECTED]:

> Quoting Patrice Dumas <[EMAIL PROTECTED]>:
>
> > > Le seul impact, c'est que : c'est le shell d'exécution en cours qui sera
> > > utilisé pour exécuter . setvars ? Comme nous utilisons le bash c'est
> >
> > Je pense que c'est de toute facon le shell en cours qui interprete le
> contenu
> > de setvars. Avec . le shell met le code tel quel a cet endroit du script.
> > Il lisait donc
> > #!/bin/bash
> > mais comme c'est un commentaire il l'ignorait.

Quand on demande l'exécution d'un programme, le système doit "deviner"
ce que c'est. Tous les fichiers commencent donc par une entête : le shebang
    exemple : "ELF", "#!/bin/sh", "#!/usr/bin/perl"

Un fichier exécutable doit commencer par un shebang.
Un fichier non-exécutable ne devrait pas commencer par un shebang.

L'intéret d'utiliser « #! » est que l'on peut alors indifféremment écrire :
          sh ./toto.sh
  ou bien ./toto.sh
Dans le second cas le shebang est utilisé, dans le premier le fichier n'a pas
besoin d'être exécutable, il est simplement lu par l'interpréteur (donc le
shebang doit être compris comme un commentaire par l'interpréteur).

setvars n'est pas un fichier exécutable, il est « sourcé ».
C'est-à-dire que l'interpréteur (sh, ksh, dash, bash, ou tout autre interpréteur
shell) lit et interprète setvars. Quand il a fini setvars, il revient là où il
en était (juste après la commande interne "source").

Supprimer le shebang ne change rien. Cela permet simplement de respecter
la règle :
  « Un fichier non-exécutable ne devrait pas commencer par un shebang. »

mcoolive.

Reply via email to