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

时间:2014-03-31 22:49:18

标签: ruby shell rvm zsh 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" 

我将/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.

我已确保将iTerm2中我的个人资料中的个人资料首选项设置为RVM推荐的“登录Shell”

iTerm2 Preferences - Login Shell

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

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

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

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

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

  • Mac OSX 10.9.1(Mavericks)
  • iTerm2
  • Zsh 5.0.2 with oh-my-zsh
  • RVM 1.5.1

6 个答案:

答案 0 :(得分:44)

对我来说,我只需要添加

source $HOME/.rvm/scripts/rvm

到我的〜/ .zshrc,它在收到与此SO问题相同的错误消息后开始工作。

答案 1 :(得分:19)

原来RVM安装在错误的地方。当我最初安装RVM时,我相信我使用sudo命令执行了此操作,该命令运行多用户安装(安装到/usr/local/rvm),而不是单个用户(应该在{{1}中) }),这就是为什么所有发布的解决方案都不适合我。

我必须使用~/.rvm/scrips/rvm卸载RVM。有一些权限问题,所以我不得不手动进入并删除无法删除的文件。执行curl命令重新安装RVM,现在将它安装在正确的位置。

使用rvm implode在我的.zshrc中采购RVM现在可以正常运行,我可以在红宝石之间切换。

答案 2 :(得分:4)

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

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

source

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

source ~/.rvm/scripts/rvm

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

[Mac OS 10.10.5 - iTerm - zsh]

答案 3 :(得分:4)

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

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

现在可以正常工作在我的ubuntu 16.04操作系统上运行正常:)

答案 4 :(得分:0)

另一种解决方案:

1)在终端中运行:

which rvm

在我的情况下,输出为---> / usr / share / rvm

2)打开.zshrc文件

nano ~/.zshrc

添加“ + the_path_to_your_rvm + / scripts / rvm ”,对于我来说是:

source /usr/share/rvm/scripts/rvm

3)保存文件(.zshrc)

4)关闭终端,然后再次打开

答案 5 :(得分:0)

您需要运行以下命令:

  

$ source〜/ .rvm / scripts / rvm

然后运行

  

$类型rvm |头-n 1

结果将是

  

rvm是/home/sun/.rvm/scripts/cli

中的shell函数

希望有帮助!