【发布时间】:2011-04-26 15:32:34
【问题描述】:
(见底部更新)
我觉得我在这里遗漏了一些非常明显的东西,但我无法从 shell 脚本中更改 gemset。这个最小的脚本演示:
#!/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"
还是不行。
有趣的是,如果我尝试在不首先创建“测试”gemset 的情况下运行脚本,我会得到ERROR: Gemset 'testing' does not exist, rvm gemset create 'testing' first. 但是,如果我创建 gemset 然后运行脚本,我不会从脚本和 gemset 中得到任何输出没有改变(根据rvm info)。我能够在脚本中执行其他 RVM gemset 操作,例如创建 gemset 和信任 .rvmrc 文件。
[更新]
当然,环境正在发生变化,正如从脚本中调用rvm info 所表明的那样。如何让这些更改持续/影响调用 shell?或者,如果这不可能(如 here 所示),有没有办法根据脚本的输入设置当前的 RVM gemset?
【问题讨论】:
-
您的标题显示您使用反引号。你真的在使用它们吗?你知道这意味着命令替换吗?该命令的任何输出都必须采用 varName=value 的形式才能有用(加上很可能是前面的 eval)。祝你好运!
-
不,我不是,我只是在标题中使用它们来表示命令。