Que tal:
00 02 * * * exec /usr/bin/zsh /path/to/script.sh
Isso dirá ao zsh para executar o script. Agora você quer que seja executado em zsh não importa o que, basta adicionar o shebang no começo:
#!/usr/bin/zsh
the_rest
Eu gostaria que cron
executasse um script de um shell específico (Zsh). Eu pensei que o seguinte funcionaria:
00 02 * * * exec zsh; /path/to/script.sh
mas aparentemente não, por quê?
Isso também me fez pensar, como descobrir quais shell e scripts de init são executados cron
antes de executar a entrada no crontab?
O Cron tem várias variáveis ambientais configuradas em /etc/crontab
, especificamente SHELL
e PATH
. O valor padrão para SHELL
é /bin/sh
. Portanto, a menos que isso seja alterado ou especificado de outra forma em um script, cron
executará comandos usando sh
.