Jak zmienić powłokę crona (sh na bash)?

70

Czy można uruchamiać polecenia w crontabie za pomocą bash zamiast sh? Wiem, że możesz przekazywać polecenia, z -cktórymi walisz , ale to denerwujące i i tak nigdy nie używam sh.

Puszysty
źródło
tak naprawdę nie wiem, co robisz (nie znasz crona), ale jeśli uruchamiasz skrypt, dodanie do niego shebang powinno działać, nie jestem pewien, czy mam rację.
Alvin Wong,

Odpowiedzi:

103

Powinieneś być w stanie ustawić zmienną środowiskową przed uruchomieniem zadania cron:

SHELL=/bin/bash
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
slm
źródło
2
czy możliwe jest również, aby czytał .bashrc?
Puszysty
3
@Fluffy .bashrcjest - z definicji - interaktywnymi powłokami; więc kiedy rozpoczęła poprzez cron, bashbędą czytać ten plik tylko wtedy, gdy jest to interaktywna powłoka .
umläute
18
Dodałem, że udało mi się sprawić, by czytał bashrc BASH_ENV="/root/.bashrc". Dzięki
Fluffy,
2
@Fluffy powinieneś udzielić odpowiedzi
vol7ron 11.04.17
2
Jeśli chodzi o .bashrc, bash -lwygląda przydatnie, blog.endpoint.com/2015/02/cron-wrapper-keep-your-cron-jobs.html
mpapec