RVM在ZSH中无法工作。

102

我想在我的Mac上尝试使用ZSH Shell,但我也经常进行Ruby和Rails开发,因此我经常使用RVM。问题是我似乎无法让RVM在ZSH中正常工作,而在默认的Bash Shell中它可以正常工作:

> zsh
> rvm 1.9.2
> ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
> which ruby
/usr/bin/ruby

我可以确认已安装RVM以及RVM下的ruby 1.9.2版本,我经常在Bash中使用它。在ZSH中运行rvm list将显示以下内容:

rvm rubies

   ruby-1.8.7-p302 [ x86_64 ]
=> ruby-1.9.2-p0 [ x86_64 ]

这在我的iMac和MacBook Pro上都发生了。我在两台电脑上都使用OS X 10.6.6,在iMac上使用ZSH 4.3.9(在笔记本电脑上是4.3.10)。目前还没有像oh-my-zsh这样的花里胡哨的东西。
我尝试查看RVM website 上的文档,但那里没有帮助我解决问题。
6个回答

300

你的 ~/.zshrc 文件中有这行代码吗?

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

2
哈哈哈,完全忘记了那么简单的事情。现在我为自己的固执感到烦恼,因为我没有早点来这里。谢谢 :)。 - swilliams
7
不用谢,有时候这种情况是正常的 :) 为了保留我的旧设置,我做了一个实用的事情:在我的 ~/.zshrc 文件中添加了 "source ~/.profile" 和 "source ~/.bash_profile"。这样也使得我的 .zshrc 文件变得更加清洁。 - intellidiot
3
当我使用 oh-my-zsh 自定义 zsh 时,它会向 .zshrc 中添加一堆路径,这些路径是从我现有的 shell 中获取的,其中包括在 bash 下由 rvm 添加的路径。 - Luke Chadwick
6
请确保您的 $HOME/.rvm/bin 路径在 /usr/bin 之前,否则您可能会调用随 OS X 附带的 Ruby 可执行文件。 您可以通过在 ZSH 中键入 'where ruby' 来检查优先级。 - Perishable Dave
1
根据所有的投票,我很高兴看到其他人和我一样也会错过一些简单的事情 :) - swilliams
显示剩余4条评论

25

注意:2014年3月

使用最新的RVM,以下代码行:

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

这不再需要了,也不应该在你的~/.zshrc中出现。

RVM documentation with Zsh中已更新文档:

Make sure in iTerm2 Preferences: Login shell option is set (do not use Command option). This is required for RVM to work.

If you are still getting rvm is not a function errors on iTerm, try:

rvm get stable --auto-dotfiles

至少在我的Arch Linux安装中,xterm没有使用登录shell,因此即使运行该命令,rvm似乎也没有正确设置。 - ioquatix

4

注:2014年11月

rvm安装说明中警告说,在设置PATH时,.zshrc不包括$PATH,因此替换PATH的内容而不考虑PATH中已经存在的内容。

为了解决这个问题,我现在将.rvm/bin添加到PATH中,然后在第二行设置PATH时在开头添加$PATH:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

export PATH=$PATH:"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/local/mysql/bin:/opt/local/bin"

2

我曾经遇到同样的问题,后来在安装 "ruby on rails" 之后使用了以下方法解决:

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc

and

source ~/.zshrc

1
我使用zsh,并在我的.zshrc文件中添加了[[ -s“$HOME/.rvm/scripts/rvm”]] && .“$HOME/.rvm/scripts/rvm”,但出现了解析错误:404。
当我将该行移动到.profile文件中时,错误停止了。看起来它与我的.zshrc文件中的某些内容冲突,也许在.profile中运行可以避免.zshrc文件不兼容性。我还没有找到其他解决方法。

1

我在Manjaro Linux (zsh)上让它工作了,方法是在$HOME/.zshrc中添加source /usr/share/rvm/scripts/rvm


谢谢Alexanderius!我的路径不是"$HOME/.rvm/scripts/rvm",与之前的版本不同。在Ubuntu 20.04上,将source /usr/share/rvm/scripts/rvm添加到.zshrc中对我有用。 - Mark Evans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接