caffeinate
lanza ejecutables. Sin embargo, las funciones de shell solo existen dentro de la shell. Las funciones de shell no son ejecutables.
Solución alternativa: llame a bash directamente
Esto funciona mejor para comandos de una línea y simples.
caffeinate bash -c 'sleep 2'
Los multilínea también funcionan:
caffeinate bash <<EOF
sleep 2
echo "done :D"
EOF
Solución alternativa: llame a un script en lugar de a una función
En lugar de hacer su trabajo dentro de una función, divídalo en un script separado:
caffeinate mysleep.sh
#!/bin/bash
# mysleep.sh
sleep 2