• [^] # Re: Sympa !

    Posté par (site web personnel) . En réponse au journal Comment rendre le shebang plus festif. Évalué à 6.

    D'ailleurs, il faudrait trouver un langage interprété qui n'a pas le dièse comme début de commentaire pour voir comment il gère ce cas là.

    L'interpréteur PHP sait que le #! en tout début d'un fichier correspond au shebang et qu'il faut ignorer cette première ligne. D'après la documentation cela ne fonctionnerait pas sous Windows...

    La documentation en français :
    https://www.php.net/manual/fr/features.commandline.usage.php

    [...] la première ligne du script devra être #!/usr/bin/php (à remplacer par le chemin vers le binaire PHP CLI sur le système sous-jacent). Le reste du fichier doit contenir le code PHP normal, compris entre les balises ouvrantes/fermantes. Après avoir mis les droits d'exécution sur le script (chmod +x test), il peut être exécuté comme un script shell ou perl habituel

    Exemple :

    $ cat test.php
    #!/usr/bin/env php
    <?php
    var_dump($argv);
    ?>
    $ chmod +x test.php
    $ ./test.php coucou DLFP
    array(3) {
     [0]=>
     string(10) "./test.php"
     [1]=>
     string(6) "coucou"
     [2]=>
     string(4) "DLFP"
    }

    On modifie la ligne du shebang :

    $ cat ./test.php
    #!coucou DLFP
    <?php
    var_dump($argv);
    ?>
    $ php ./test.php on_ne_voit_pas_la_ligne_du_shebang
    array(2) {
     [0]=>
     string(10) "./test.php"
     [1]=>
     string(34) "on_ne_voit_pas_la_ligne_du_shebang"
    }

    On remplace le shebang #! par un commentaire shell # sans le caractère !. Cette fois-ci l'interpréteur PHP ne reconnaît pas le shebang et afficher la ligne :

    $ cat ./test.php
    # coucou DLFP
    <?php
    var_dump($argv);
    ?>
    $ php ./test.php on_voit_la_première_ligne
    # coucou DLFP
    array(2) {
     [0]=>
     string(10) "./test.php"
     [1]=>
     string(26) "on_voit_la_première_ligne"
    }

    Commentaire sous licence Creative Commons Zero CC0 1.0 Universal (Public Domain Dedication)