Um script bash deve começar com um shebang, para permitir que o processo de lançamento saiba que é um script que deve ser executado no bash shell. Portanto, a primeira linha do seu script deve ser #!/bin/bash
. Esta é uma boa convenção para entrar, é como os scripts do bash devem ser escritos. Seu script atualmente funciona quando você executa bash /home/backupscript.sh
porque já está dizendo para executar um bash shell com a parte bash
desse comando. Você poderia, talvez, contornar isso fazendo sua linha de crontab:
0 4 24-31 * 4 bash /home/backupscript.sh
Esta não é a maneira correta de fazer isso, pois ignora as permissões no script, embora funcione.
Provavelmente você não tem as permissões corretas no seu script, você precisa definir o bit de execução. Este é o domínio do comando chmod
, instruções sobre como usá-lo podem ser encontradas aqui.
Se você quiser que qualquer pessoa em seu sistema consiga executar este comando, você pode executar:
chmod +x /home/backupscript.sh
Embora você queira restringir o acesso apenas ao seu usuário, supondo que o usuário tenha criado o script, que seria:
chmod u+x /home/backupscript.sh
Meu conselho é adicionar o shebang ao início do seu script e alterar as permissões para torná-lo executável.