• [^] # Re: une piste

    Posté par . En réponse au message Array not found. Évalué à 2. Dernière modification le 11 juin 2013 à 12:12.

    Pour complèter la réponse de NeoX, quand tu lance 'sh script.sh', le programme 'sh' va lire le fichier 'script.sh' et l'interprêter. Et la première ligne qui commence par '#' est ignorée car ce caractère indique le début d'un commentaire dans la syntaxe shell (c.a.d. que tu mettrais à la place '#! /outsiplou' cela marcherait encore).
    Lorsque tu lance '/path/to/script.sh', le noyaux linux va lire ce shebang pour déterminer le nom de l'interprèteur et il va ensuite le lancer avec comme premier paramètre le nom du script.

    Bref, cela fonctionnerait aussi partout si tu lançais 'bash test.sh'.

    PS: la ligne 'bash --version' de ton script ne teste pas l'interprèteur qui est utilisée, mais lance une nouvelle commande bash. Sous linux, il est possible de tester /proc/$$/exe qui pointe vers le binaire du shell courant, i.e. utiliser '/proc/$$/exe --version' à la place te donnerait un résultat plus pertinant… (+1 à celui qui donne une manière portable de tester le shell courant :))

    PS2: les bonnes pratiques conseillent d'utiliser la version du shebang avec espace ('#! /path/') bien que les 2 fonctionnent…