Frage: Du nutzt den "root" User (pi) für alles?
Ich habe die .sh in home\pi\SHcripte abgelegt und kann diese über crontab -e ohne Probleme ansprechen/ausführen.
Man muss im Crontab (wie buers erwähnte) den User mitgeben sollte er abweichen von pi.
Geht mit:
* * * * * USERNAME /pfad/zum/script.sh
EDIT:
nachgestellt:
Crontab -e mit User pi:

down.sh:

abgelegt unter:
RPI fährt wie geplant um 19:05 herunter... (Dauert ca. 1 Minute bis der Shutdown greift).
Unbedingt dran denken, die .sh auch ausführbar zu machen (sonst passiert nix). Dazu in den Ordner der .sh's wechseln und: chmod +x down.sh Wenn du über eine GUI verfügst, danach zum testen mal n Doppeklick drauf. Sollte dann so aussehen:
Klick auf Ausführen und der RPI fährt nach ca. 1 Minute herunter (Test für das Script).
Wenn es so nicht funktioniert, sorry, dann ist das System korrupt oder verkonfiguriert.
Getestet auf einem aktuellen RaspiOS (bookworm).
Noch ein Hinweis von meiner Seite:
Ich persönlich würde Kodi nicht über das RaspiOS installieren sondern Libreelec bevorzugen. Dort läuft alles Out of the Box und du kannst den RPI einfach über die Kodi Gui herunterfahren. Hab das für mich so gelöst, dass der RPI als Slave an einer Master/Slave Steckdose hängt.
TV AN -> RPI fährt hoch. RPI ausschalten (über die Kodi Gui), TV geht dank CEC mit aus, somit auch die Slave Dose. Ergo alles aus 