“RVM不是函数”错误

时间:2012-03-17 18:49:32

标签: ruby rvm

RVM安装在我的机器上(运行Mac OSX 10.6.8),运行正常,运行正常。奇怪的是,要运行它,我必须为每个新会话使用source ~/.rvm/scripts/rvm。我尝试从它创建一个符号链接到/opt/local/bin/rvm,但是当它运行时它什么也没做。我还尝试创建从~/.rvm/bin/rvm/opt/local/bin/rvm的符号链接,当我在终端中运行rvm时,它会按预期显示帮助页面。但是当我尝试rvm use some_ruby_version时,它总是显示“RVM不是一个函数,用'rvm use ...'选择红宝石将不起作用。”我该如何解决这个问题?

我的目标是让它必须在每个会话中键入源命令,并且由于某种原因~/.profile不执行。

10 个答案:

答案 0 :(得分:42)

您必须将RVM脚本导入当前会话,因为它会对shell环境进行更改 - 并且绝对不可能从子进程完成此操作。您将RVM作为外部命令运行的努力无法成功。

要实际解决此问题,您有两种选择:

  1. 配置终端模拟器以启动登录shell而不是非登录shell,以便加载.profile
  2. .bashrc修改为源RVM,这也适用于非登录shell。
  3. 要做到第二步,您只需添加到~/.bashrc

    if test -f ~/.rvm/scripts/rvm; then
        [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
    fi
    

答案 1 :(得分:8)

如果您使用zsh作为shell而不是bash,则必须:

1

vi ~/.zshrc 

2。 像马特说的那样,添加:

if test -f ~/.rvm/scripts/rvm; then
   [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
fi

3。重启Terminall 做完了!

rvm use 1.9.3

Wil工作

答案 2 :(得分:7)

我不明白~/.profile正确做了什么;我需要更改~/.bash_profile。问题解决了!

答案 3 :(得分:3)

嗯,对于山狮(10.8.3),对我有用的是编辑/ etc / profile

并在文件底部添加前面提到的行:

  if test -f ~/.rvm/scripts/rvm; then
        [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
    fi

答案 4 :(得分:2)

我有同样的问题。我发现.profile文件没有得到更新,所以我添加了添加到.bash_profile中的相同命令:

[[-s“$ HOME / .rvm / scripts / rvm”]]&&来源“$ HOME / .rvm / scripts / rvm”

我不知道这是不是正确的方法,但它有效......

答案 5 :(得分:2)

您不应该像其他人建议的那样编辑任何内容。只需进入终端设置并选择“运行命令作为登录shell”。这将导致.profile在下一个终端实例上运行。重新打开终端,您应该可以使用rvm use 1.9.3(或您安装的任何版本)。

在rvm.io上找到更多信息(这也是一个很好的答案)

https://rvm.io/integration/gnome-terminal

答案 6 :(得分:1)

您必须进行一些设置。

打开终端并运行此命令。

source ~/.rvm/scripts/rvm

然后转到edit > Title and command并检查Run command as login shell

你完成了。现在您不需要每次都指定源。

答案 7 :(得分:1)

让我搞砸的是假设我的路径是正确的,因为我使用的是我可以手动运行的。

显然,可以使用不同的可执行文件或脚本,它们位于不同的位置。

我认为Mina应该使用的路径是:

 /usr/local/rvm/bin/rvm

实际上是这样的:

/usr/local/rvm/scripts/rvm

答案 8 :(得分:0)

当我成为root用户时,我遇到了这个问题。我尝试了上面的许多解决方案。最终工作的是从root退出并成为普通用户。无论如何,这就是我所需要的。

答案 9 :(得分:0)

这些解决方案似乎都没有兑换我在Ubuntu 12.04 LTS上的问题。

我所做的是以下内容:

  1. rvm get stable --auto-dotfiles,如RVM文档here
  2. 中所述
  3. 添加source ~/.profile作为第一行:〜/ .bash_profile
  4. 我不会将所有这些步骤都记录为来自RVM命令行的错误:

      

    RVM不是一个功能,选择'rvm use ...'的红宝石不会   工作。您需要更改终端模拟器首选项以允许   登录shell。有时需要使用/bin/bash --login作为   命令。请访问https://rvm.io/integration/gnome-terminal/   举个例子。

      
        
    • 警告:你有'〜/ .profile'文件,你可能想要加载它,   为此,将以下行添加到'/home/user_name/.bash_profile':

           

      source~ / .profile

    •