(См. Обновление внизу)
Мне кажется, что я упускаю что-то ужасно очевидное, но я не могу изменить наборы гемов из внутри сценария оболочки. Этот минимальный сценарий демонстрирует:
#!/usr/bin/env bash
rvm gemset use "testing"
Я даже попробовал инструкции со страницы Сценарии RVM (хотя это и не казалось необходимым):
#!/usr/bin/env bash
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# First try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# Then try to load from a root install
source "/usr/local/rvm/scripts/rvm"
else
printf "ERROR: An RVM installation was not found.\n"
fi
rvm gemset use "testing"
Все равно нет.
Достаточно интересно, если я попробую чтобы запустить сценарий без предварительного создания гемсета "testing", я получаю ОШИБКА: набор gemset "testing" не существует, rvm gemset сначала создает "testing".
Однако, если я создаю гемсет, а затем запускаю скрипт, я не получаю никаких выходных данных из скрипта, и гемсет не изменяется (согласно rvm info
). Я могу выполнять другие действия RVM gemset,
[Обновление]
Конечно, среда изменяется, на что указывает вызов rvm info
из сценария. Как мне заставить эти изменения сохраняться / влиять на вызывающую оболочку? Или, если это невозможно (как указано здесь ), есть ли способ установить текущий гемсет RVM на основе ввода в скрипт?