(См. обновление внизу)
Я чувствую, что мне не хватает чего-то ужасно очевидного здесь, но я не могу изменить gemsets из оболочки script. Этот минимальный script демонстрирует:
#!/usr/bin/env bash
rvm gemset use "testing"
Я даже попробовал инструкции на странице Scripting 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"
По-прежнему нет.
Интересно, если я попытаюсь запустить script, не создав сначала "тест" gemset, я получаю ERROR: Gemset 'testing' does not exist, rvm gemset create 'testing' first.
Однако, если я создам gemset, а затем запустим script, я не получаю никакого вывода из script, а gemset не изменяется (согласно rvm info
). Я могу выполнять другие действия Gemset RVM, такие как создание gemset и доверяющих файлов .rvmrc
, из script.
[Обновление]
Конечно, среда меняется, о чем свидетельствует вызов rvm info
из script. Как получить эти изменения для сохранения/воздействия на вызывающую оболочку? Или, если это невозможно (как указано здесь), есть ли способ установить текущий гемсет RVM на основе входа в script?