Scripts Bash et IA : 5 vérifications avant d’exécuter

L’IA vous proposera allègrement un script Bash qui supprime tout votre répertoire personnel avant même que vous ayez cligné des yeux. C’est pourquoi une liste de contrôle en cinq points est désormais aussi indispensable que les tests unitaires pour quiconque copie-colle un script Bash généré par IA dans son terminal.
La directive stricte qui évite les catastrophes silencieuses
Tout script Bash non trivial doit commencer par des garde-fous identiques :
#!/usr/bin/env bash set -euo pipefail IFS=$' \n\t'
set -e interrompt le script dès qu’une commande échoue, empêchant une suppression en cascade. set -u signale les variables non définies, souvent responsables de commandes comme rm -rf $VARIABLE_INEXISTANTE/. set -o pipefail garantit qu’un pipeline échoue si l’une de ses étapes échoue. Le réglage de IFS évite les surprises de découpage de mots sur les noms de fichiers. Si l’IA omet ces lignes, ajoutez-les et relisez le script : des bugs subtils apparaissent souvent immédiatement.
Des guillemets autour de chaque variable – une obligation
La principale source de catastrophes en Bash provient des variables non protégées par des guillemets. L’IA propose souvent cette forme par défaut, car les tutoriels l’utilisent ainsi :
Incorrect
rm -rf $TARGET_DIR
Correct
rm -rf "$TARGET_DIR"
Une variable vide ou un espace dans le chemin transforme la première ligne en rm -rf, supprimant le répertoire courant. Parcourez chaque $VAR dans le script et entourez-le de guillemets : c’est la méthode la plus rapide pour éviter le prochain scandale de suppression virale.
La récupération après échec n’est pas une priorité pour l’IA
Les scripts générés par IA supposent que chaque étape réussit. Prenons cet exemple :
mkdir -p /opt/new-app cd /opt/new-app tar xzf $TARBALL rm $TARBALL
Si tar échoue, set -e arrête le script. Sans cette directive, le script continue allègrement vers rm $TARBALL, effaçant les maigres données restantes. À chaque étape, demandez-vous : quelle est la procédure de récupération en cas d’échec ? Si la réponse est « aucune », évitez au moins de supprimer des données avant d’avoir vérifié le succès de l’étape précédente.
Les journaux ne doivent pas exposer vos secrets
La fuite la plus fréquente survient quand l’IA laisse set -x activé :
set -x # débogage curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com/...
Avec set -x, chaque commande – y compris le jeton développé – apparaît dans les journaux de l’outil CI. Désactivez le traçage autour des appels sensibles :
set +x curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com/... set -x
Ou supprimez simplement set -x une fois le débogage terminé ; les modèles oublient presque toujours de le nettoyer.
Root n’est pas une option par défaut, mais un dernier recours
Les scripts générés par IA incluent souvent des commandes sudo ou supposent des privilèges root. Réservez les commandes nécessitant des droits élevés aux tâches qui en ont vraiment besoin. Si une commande peut s’exécuter en tant qu’utilisateur standard, faites-le ; cela réduit l’impact d’une éventuelle erreur.
Source : DEV Community. Synthèse éditoriale assistée par IA — TechnoExpress.

