Wie ändere ich die Cron-Shell (sh to bash)?

70

Ist es möglich, Befehle in crontab mit bash anstelle von sh auszuführen? Ich weiß, dass Sie Befehle an Bash übergeben können -c, aber das ist ärgerlich und ich benutze sh sowieso nie.

Flauschige
quelle
Ich weiß nicht genau, was Sie tun (nicht mit Cron vertraut), aber wenn Sie ein Skript ausführen, sollte es funktionieren, wenn Sie einen Shebang hinzufügen. Ich bin mir nicht sicher, ob ich richtig liege.
Alvin Wong

Antworten:

103

Sie sollten in der Lage sein, die Umgebungsvariable vor der Ausführung des Cron-Jobs festzulegen:

SHELL=/bin/bash
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
slm
quelle
2
ist es möglich, es auch zum Lesen von .bashrc zu bringen?
Fluffy
3
@Fluffy .bashrcsteht per Definition für interaktive Shells. Wenn also über gestartet wird cron, bashwird diese Datei nur gelesen, wenn es sich um eine interaktive Shell handelt .
10.
18
Ich konnte es durch Hinzufügen von bashrc zum Lesen bringen BASH_ENV="/root/.bashrc". Thanks
Fluffy
2
@Fluffy Sie sollten das eine Antwort machen
vol7ron
2
In Bezug auf .bashrc, bash -lsieht nützlich aus, blog.endpoint.com/2015/02/cron-wrapper-keep-your-cron-jobs.html
mpapec