RVM + Zsh"RVM不是一个函数,用'rvm use ...'选择rubies将无法正常工作"

big*_*les 12 ruby shell zsh rvm oh-my-zsh

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

我无法让RVM和oh-my-zsh一起玩得很好.我已经尝试了几种不同的解决方案,其中一些是关于SO的,但我发现的任何解决方案似乎都无法解决问题.

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

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

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" 
Run Code Online (Sandbox Code Playgroud)

我添加/usr/local/rvm到Path指令,因为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.
Run Code Online (Sandbox Code Playgroud)

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

iTerm2首选项 - 登录Shell

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

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

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

Your Ruby version is 2.0.0, but your Gemfile specified 1.9.3
Run Code Online (Sandbox Code Playgroud)

然后我无法运行,rvm use 1.9.3因为它返回上面提到的错误.

如何让zsh与RVM一起玩得很好?

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

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

tru*_*ktr 49

对我来说,我只需要添加

source $HOME/.rvm/scripts/rvm
Run Code Online (Sandbox Code Playgroud)

到我的〜/ .zshrc并且它在使用与此SO问题相同的错误消息后开始工作.

  • 如果你全局安装了rvm(即在/ usr/local/rvm中),请添加`source/usr/local/rvm/scripts/rvm`. (7认同)

big*_*les 20

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

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

在我的采购RVM .zshrc[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"目前工作正常,我可以红宝石之间进行切换.


小智 6

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

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

source
Run Code Online (Sandbox Code Playgroud)

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

source ~/.rvm/scripts/rvm
Run Code Online (Sandbox Code Playgroud)

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

[Mac OS 10.10.5 - iTerm - zsh]


小智 5

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

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

现在在我的 ubuntu 16.04 操作系统上一切正常:)