(见底部更新)
我觉得我在这里遗漏了一些非常明显的东西,但是我无法在shell脚本中更改gemsets.这个最小的脚本演示:
#!/usr/bin/env bash
rvm gemset use "testing"
Run Code Online (Sandbox Code Playgroud)
我甚至尝试过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"
Run Code Online (Sandbox Code Playgroud)
仍然没有去.
有趣的是,如果我尝试在没有首先创建"测试"gemset的情况下运行脚本,我会得到ERROR: Gemset 'testing' does not exist, rvm gemset create 'testing' first.
但是,如果我创建gemset然后运行脚本,我从脚本中得不到输出并且gemset没有被更改(根据rvm info
).我能够在脚本中执行其他 RVM gemset操作,例如创建gemsets和信任.rvmrc
文件.
[更新]
当然,环境正在发生变化,如rvm info
脚本中的调用所示.如何让这些更改持久/影响调用shell?或者,如果那是不可能的(如所示这里),有没有什么办法来设置基于输入到一个脚本当前RVM宝石?
Ale*_*una 20
有完全相同的问题,这是解决方案:
#!/bin/bash
# IMPORTANT: Source RVM as a function into local environment.
# Otherwise switching gemsets won't work.
[ -s "$HOME/.rvm/scripts/rvm" ] && . "$HOME/.rvm/scripts/rvm"
# Enable shell debugging.
set -x
rvm 1.9.2@gemset_a
rvm gemdir
gem env gemdir
rvm 1.9.2@gemset_b
rvm gemdir
gem env gemdir
Run Code Online (Sandbox Code Playgroud)
我发现你的交互式shell有rvm()
它的帮助器,而脚本环境却没有它们.rvm
二进制执行,部分工作,从而导致一些混乱.
归档时间: |
|
查看次数: |
6215 次 |
最近记录: |