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.