Я перепробовал большинство предоставленных решений, но сначала ничего не получалось. Оказывается, однако, что это не были решения, которые не работали. Очевидно, мой ~/.bashrc
файл начинается со следующего блока кода:
case $- in
*i*) ;;
*) return;;
esac
В основном это case statement
, который проверяет текущий набор параметров в текущей оболочке, чтобы определить, что оболочка работает в интерактивном режиме.
Если оболочка работает в интерактивном режиме, она переходит к поиску файла ~/.bashrc
.
Однако в оболочке, вызываемой cron
, переменная $-
не содержит значения i
, которое указывает на интерактивность.
Таким образом, файл ~/.bashrc
никогда не получает полностью. В результате переменные среды никогда не устанавливались.
Если это ваша проблема, не стесняйтесь закомментировать блок кода следующим образом и попробуйте снова:
# case $- in
# *i*) ;;
# *) return;;
# esac
Надеюсь, это окажется полезным