Назад | Перейти на главную страницу

Какую оболочку использует cron?

cron запускает команды оболочки из crontabs.

Но, только что обнаружив различия между zsh и bash, я обеспокоен тем, что не знаю, какую оболочку cron использует для интерпретации команд crontab? Очевидно, что простой случай, когда запись cron просто указывает на файл сценария, обрабатывается #!/path/to/interpreter в первой строке, а что, если в cron что-то посложнее?

Я заглянул в /etc/cron* и не видите ничего, что могло бы позволить это установить или изменить?

В crontab (5) manpage обрабатывает ваш запрос по умолчанию /bin/sh

Некоторые переменные среды устанавливаются автоматически демоном cron (8). SHELL установлен в / bin / sh, а LOGNAME и HOME устанавливаются из строки / etc / passwd владельца crontab. HOME и SHELL могут быть отменены настройками в crontab; LOGNAME не может.

так что добавление

SHELL=/bin/bash

в файл crontab соответственно изменит оболочку.

Вы можете поставить SHELL=/bin/bash в твоем crontab - вы также можете указать .bashrc с помощью BASH_ENV="/root/.bashrc". Это должно вас подтолкнуть. На самом деле я не знаю, что произойдет, если у вас нет SHELL определен, но добавлен в crontab позволяет легко понять, что к чему.