Où l'on parle du shebang
Dans cet article, nous allons voir comment bien choisir un shebang.
Le shebang, représenté par #!, est un en-tête d’un fichier texte qui indique au système d’exploitation (de type Unix) que ce fichier est un script (ensemble de commandes) et non un fichier binaire ; sur la même ligne est précisé l’interpréteur permettant d’exécuter ce script.
J’ai des petits soucis dans mon script
J’utilise deux ordinateurs: un sous Linux et un sous MacOS et j’ai un script qui fonctionne sous Linux et pas sur MacOS.
Voici L’extrait intéressant
#!/bin/bash
declare -A Array
L’erreur est la suivante sur MacOS : declare: -A: invalid option
Cette fonctionnalité (associative array) n’est disponible qu’à partir de bash
4.0
Et pourtant, quand je regarde ma version de bash
, c’est ok.
❯ bash --version
GNU bash, version 5.2.21(1)-release (x86_64-apple-darwin21.6.0)
Mais qu’est ce qui se passe ?
Creusons
Regardons s’il existe plusieurs versions de bash
installées.
❯ which -a bash
/usr/local/bin/bash
/bin/bash
Et ben oui !
Regardons les versions
❯ /usr/local/bin/bash --version
GNU bash, version 5.2.21(1)-release (x86_64-apple-darwin21.6.0)
❯ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)
Le problème s’éclaire: la version de bash
utilisé par le script n’est pas celle
de mon PATH
et n’est pas la plus récente.
La solution
On peut utiliser la commande env
au lieu d’un interpréteur de commandes pour chercher celui-ci dans le PATH
#!/usr/bin/env bash