caffeinate
avvia i file eseguibili. Tuttavia, le funzioni di shell esistono solo all'interno della shell. Le funzioni della shell non sono eseguibili.
Soluzione temporanea: chiama direttamente bash
Funziona meglio per one-liner e semplici comandi.
caffeinate bash -c 'sleep 2'
Anche le multi-liners funzionano:
caffeinate bash <<EOF
sleep 2
echo "done :D"
EOF
Soluzione temporanea: chiama uno script anziché una funzione
Invece di svolgere il tuo lavoro all'interno di una funzione, suddividila in uno script separato:
caffeinate mysleep.sh
#!/bin/bash
# mysleep.sh
sleep 2