Хотя ответ kmmndr верен, мне также нравится bash -l
-подход.
Открытие неинтерактивной оболочки для входа упрощает задачу, и, поскольку все мои Rails-приложения и сценарии Ruby работают под одним и тем же пользователем, накладные расходы не являются проблемой.
Так что вместо
*/1 * * * * /bin/bash -c 'export PATH="$HOME/.rbenv/bin:$PATH" ; eval "$(rbenv init -)"; cd /data/app/; ruby -v'
Я делаю
*/1 * * * * /bin/bash -lc 'cd /data/app/; ruby -v'
Как отмечалось в ответе выше, bash -l
будет действовать так, как будто вы входите в систему в обычном режиме, что означает, что ваша среда rbenv уже настроена (если у вас есть соответствующие строки в ваших .bashrc
, .bash_profile
из /etc/profile.d/*
).
Если вам нужно больше подробностей, я написал сообщение в блоге об этой теме.