Pode parecer uma coisa pequena, mas certifique-se de que os caracteres #!
sejam os dois primeiros caracteres do script (sem espaços em branco anteriores). Para ilustrar:
# cat /etc/cron.hourly/shebang-test
#!/bin/bash
echo "Hello from $0" >> /tmp/cron.out
#
# run-parts --report /etc/cron.hourly
/etc/cron.hourly/shebang-test:
run-parts: failed to exec /etc/cron.hourly/shebang-test: Exec format error
run-parts: /etc/cron.hourly/shebang-test exited with return code 1
#
(falha); mas depois de remover o espaço em branco principal
# sed -i 's/^ *//' /etc/cron.hourly/shebang-test
#
# cat /etc/cron.hourly/shebang-test
#!/bin/bash
echo "Hello from $0" >> /tmp/cron.out
é executado com sucesso
# run-parts --report /etc/cron.hourly
# cat /tmp/cron.out
Hello from /etc/cron.hourly/shebang-test
#