gpt4 book ai didi

bash - 无法通过 `rvm gemset use` 从 shell 脚本更改 RVM gemset

转载 作者:行者123 更新时间:2023-11-29 08:49:08 24 4
gpt4 key购买 nike

(见底部更新)


我觉得我在这里遗漏了一些非常明显的东西,但我无法从 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?或者,如果这不可能(如 here 所示),是否有任何方法可以根据脚本输入设置当前 RVM gemset?

最佳答案

有完全相同的问题,这是解决方案:

#!/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

我发现您的交互式 shell 有 rvm() 及其助手,而脚本的环境没有有它们。 rvm 二进制文件被执行,部分 工作,因此造成一些困惑。

关于bash - 无法通过 `rvm gemset use` 从 shell 脚本更改 RVM gemset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5792707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com