(见底部更新)
我感觉自己很明显地错过了什么,但是我无法在shell脚本中更改gemsets。这个最小化的脚本演示了:
#!/usr/bin/env bash
rvm gemset use "testing"
我甚至尝试了Scripting RVM page上的说明(尽管似乎并不必要):
#!/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之前尝试运行脚本,我会得到ERROR: Gemset 'testing' does not exist, rvm gemset create 'testing' first.
错误。但是,如果我创建了gemset然后再运行脚本,脚本没有输出,并且gemset没有改变(根据rvm info
)。我能够执行其他RVM gemset操作,例如在脚本内创建gemset和信任.rvmrc
文件。
[更新]
当然,环境是在改变的,这可以通过从脚本中调用rvm info
来表示。如何使这些更改持久化/影响调用shell?或者,如果这不可能(如此处所示),是否有任何方法可以基于脚本输入设置当前的RVM gemset?