Pour qu'un script bash enregistre dans un fichier toutes les erreurs et tous les textes générés sur STDOUT ou STDERR, on peut ajouter en tête du script :
#!/bin/bash
# Log all the STDOUT and STDERR from the script in debug.log file
exec > >(tee -a "$HOME/debug.log") 2>&1

Le fichier $HOME/debug.log sera automatiquement créé et remplacé et amendé.
Pour remplacer le contenu du fichier à chaque exécution, il faut utiliser :
!/bin/bash
# Log all the STDOUT and STDERR from the script in debug.log file
exec > >(tee "$HOME/debug.log") 2>&1

Issu de https://unix.stackexchange.com/a/61936