我首先要说的是我不是命令行的专家,所以我真的只知道自己在做什么。
我无法让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”
我尝试将这些首选项更改为“命令”选项并使用推荐的/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
,因为它返回上述错误。
有关我的设置的一些信息:
答案 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函数
希望有帮助!