cmd#8 – sed et sudo

Récemment, j’ai été confronté à une erreur de droit sur l’une des étapes d’un script bash. Sans possibilité d’agir sur le contexte d’exécution du script, celui-ci utilise l’instruction sudo pour chaque opération. L’une des étapes utilise sed et un opérateur de redirection, afin de modifier un paramètre du fichier fournissant les variables d’environnement, seulement, le sudo associé à sed ne permet pas de procéder à l’écriture du fichier temporaire .env-tmp.

sudo sed 's/API_ENABLED=false/API_ENABLED=true/g' .env > .env-tmp
sudo mv .env-tmp .env

La solution, pourtant simple, consiste en l’utilisation de l’option -i, pour effectuer le changement voulu.

sudo sed -i 's/API_ENABLED=false/API_ENABLED=true/g' .env

Je m’étonne que nous ne l’ayons pas vu au moment de l’écriture du script.