【问题标题】:RVM + Zsh "RVM is not a function, selecting rubies with 'rvm use ...' will not work"RVM + Zsh “RVM 不是一个函数,用 'rvm use ...' 选择红宝石将不起作用”
【发布时间】:2014-03-31 22:49:17
【问题描述】:

首先我要说我不是命令行专家,所以我真的只知道自己在做什么。

我无法让 RVM 和 oh-my-zsh 一起玩得很好。我已经尝试了几种不同的解决方案,其中一些在 SO 上,但我发现似乎没有解决问题。

最初,其他人在我的机器上设置了 RVM。后来我自己设置了 oh-my-zsh,记得这样做时遇到了很多麻烦。

我的.zhsrc 文件是完全默认的,除了这两行

export PATH=$HOME/bin:/usr/local/bin:/usr/local/rvm/bin:$PATH

#pretty sure this line does nothing, although I've seen this fix around
# several places. I noticed that I don't seem to have an .rvm file in my 
# home directory which would be an issue, but I have no idea how to 
# go about correcting this.
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

我在 Path 指令中添加了 /usr/local/rvm,因为 zsh 在没有它的情况下返回 zsh: rvm command not found。否则大多数 rvm 命令都可以正常工作,rvm use 除外,它会引发以下错误:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

我已确保按照 RVM 的建议将 iTerm2 中我的个人资料上的个人资料首选项设置为“登录 Shell”

我已尝试将这些首选项更改为“命令”选项并使用推荐的 /bin/bash/ --login 作为命令,但是当这种情况发生时 zsh 似乎不再起作用。将命令更改为 /bin/zsh/ --login 允许 zsh 再次工作,但不能解决问题,因为我在尝试运行 rvm use 时仍然收到“RVM 不是函数”错误

RVM 中的默认 ruby​​ 设置为 2.0.0。我可以在我的主文件夹中运行 ruby -v 并获取显示默认版本的 ruby​​ 版本输出。

在 Rails 项目上工作,如果 Gemfile 指定 ruby​​ 2.0.0(默认值),我可以运行所有 rails 命令。但是在使用不同版本的项目中,我收到以下错误:

Your Ruby version is 2.0.0, but your Gemfile specified 1.9.3

然后我无法运行rvm use 1.9.3,因为它返回上述错误。

如何让 zsh 与 RVM 配合使用?

关于我的设置的一些信息:

  • Mac OSX 10.9.1(小牛队)
  • iTerm2
  • 带有 oh-my-zsh 的 Zsh 5.0.2
  • RVM 1.5.1

【问题讨论】:

    标签: ruby shell rvm zsh oh-my-zsh


    【解决方案1】:

    对我来说,我只需要添加

    source $HOME/.rvm/scripts/rvm
    

    到我的 ~/.zshrc 并开始工作,在出现与此 SO 问题相同的错误消息之后。

    【讨论】:

    • 如果您全局安装了 rvm(即在 /usr/local/rvm 中),请改为添加 source /usr/local/rvm/scripts/rvm
    【解决方案2】:

    原来 RVM 安装在错误的位置。当我最初安装 RVM 时,我相信我是使用 sudo 命令安装的,该命令运行多用户安装(安装到 /usr/local/rvm),而不是单用户安装(应该在 ~/.rvm/scrips/rvm),这就是为什么所有发布的解决方案都不适合我。

    我必须使用rvm implode 卸载 RVM。有一些权限问题,所以我不得不手动进去删除无法删除的文件。运行 curl 命令重新安装 RVM,现在它已安装在正确的位置。

    在我的 .zshrc[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 中采购 RVM 现在可以正常工作,我可以在 rubies 之间切换。

    【讨论】:

      【解决方案3】:

      @trustkr 的回答对我有用,但想补充...

      我在安装 rvm 后立即遇到了这个问题。为了让

      source
      

      要在 ~/.zshrc 文件中工作,你需要启动一个新的终端会话并在那里工作,或者你可以运行

      source ~/.rvm/scripts/rvm
      

      在您安装的同一终端会话中。

      [Mac OS 10.10.5 - iTerm - zsh]

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,在 .zshrc 文件末尾添加了这一行

        [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

        现在一切正常,在我的 ubuntu 16.04 操作系统上运行良好 :)

        【讨论】:

          【解决方案5】:

          您需要运行以下命令:

          $ source ~/.rvm/scripts/rvm

          然后运行这个

          $ 类型 rvm |头 -n 1

          结果会是这样的

          rvm 是来自 /home/sun/.rvm/scripts/cli 的 shell 函数

          希望有帮助!

          【讨论】:

            【解决方案6】:

            另一种解决方案:

            1) 在终端运行:

            which rvm
            

            我的输出是---> /usr/share/rvm

            2) 打开 .zshrc 文件

            nano ~/.zshrc
            

            添加“source + the_path_to_your_rvm + /scripts/rvm”,在我的例子中是:

            source /usr/share/rvm/scripts/rvm
            

            3) 保存文件 (.zshrc)

            4) 关闭终端再打开

            【讨论】:

              猜你喜欢
              • 2014-07-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-01-22
              • 2011-09-15
              • 1970-01-01
              • 1970-01-01
              • 2015-09-03
              相关资源
              最近更新 更多