• [^] # Re: le langage est bash, donc le langage est bash

    Posté par (site web personnel, Mastodon) . En réponse au journal bake : scripter en bash à la « makefile ». Évalué à 3.

    Oui, c’est tout à fait possible de mettre des arguments dans le shebang. Ici on pourrait faire #! /usr/bin/env -S bash -x

    Personnellement j’ai fait ce genre de chose (mettre des arguments dans le shebang) dans le passé, mais maintenant j’évite quand c’est évitable. Je ne serai pas surpris si pour certains langages ce serait inévitable (par exemple pour spécifier comment le code doit être interprété avant que l’interprétation ne commence).

    Utiliser des arguments dans le shebang peut avoir le mauvais effet de semer la confusion chez les éditeurs et autre logiciels qui veulent détecter le format du document (et non exécuter le code).

    Dans l’exemple ci-dessus, si un logiciel cherche ^#![ ]*/usr/bin/env[ ]+bash pour détecter le langage bash pour activer la coloration syntaxique, ça ne marchera pas. Et détecter toute les variantes implique d’émuler une partie de env lui-même... je doute que tous les éditeurs soient aussi exhaustifs ! VIM a l’air de s’en sortir en tout cas.

    Typiquement pour des options de bash comme -e, ça coûte rien de le mettre sur la ligne d’après si ça aide l’éditeur à correctement coloriser le code, mais ça n’est pas une question d’exécution. Le shebang est d’abord là que pour exécuter, et c’est en ça qu’il est fiable.

    Je ne me suis pas exprimé sur les extensions de fichiers qui ne sont pas exécutables et qu’il faut bien reconnaître (surtout quand on pense à tous les formats qui utilise zip comme conteneur). L’extension n’est décisive pour l’exécution que sous Windows (.exe, .com, .cmd, .bat...), ailleurs on a un format standard pour dire au système quoi faire. 😎

    ce commentaire est sous licence cc by 4 et précédentes