В Mac OS агент сборки моего CI-сервера работает от имени пользователя root. Я испортил рубиновую версию по умолчанию ruby -v
сообщает о версии 2.0, а после eval "$(rbenv init -)"
выполняется, я получаю желаемый 2.4.
Если бы я установил eval "$(rbenv init -)"
для выполнения каждый раз, когда я вхожу в оболочку, я просто добавляю его в свой ~ / .bash_profile.
Но я предполагаю, что команды из bash_profile выполняются, когда я на самом деле использую ssh как пользователь. Как я могу убедиться, что команда ruby corrector запускается при запуске системы для root?
Я не использую rbenv, но я понимаю, что этап инициализации изменяет среду текущей оболочки чтобы позволить rbenv управлять командами ruby (например, путем добавления каталога rbenv shims в переменную среды PATH. Каждый процесс имеет свою собственную среду, поэтому выполняется rbenv init
во время запуска системы повлияет только тот процесс, в котором он работал, а не всю систему.
Что вам нужно сделать, это запустить eval "$(rbenv init -)"
для каждой новой оболочки, которой вы хотите управлять с помощью rbenv. Если вы хотите, чтобы задачи, выполняемые вашим CI-сервером, передавались нам через rbenv, это означает, что вам нужно добавить это в любой процесс инициализации, который используют эти задачи. Я предполагаю, что добавление eval "$(rbenv init -)"
в ~ / .bash_profile и / или ~ / .bashrc учетной записи root, но, не зная точно, как работает сервер, я не могу сказать наверняка.
Вы можете использовать cron работа который запустит процесс сразу перезагрузка.
Запись в crontab root будет выглядеть примерно так:
@reboot $HOME/bin/startup.sh
Использовать crontab -e чтобы добавить запись. Вы бы добавили свои рубиновые команды в свой startup.sh
файл.
Бегать man 5 crontab
для получения более подробной информации и опций.