使用 RVM Ruby 而不是 MAMP Ruby

Use RVM Ruby instead of MAMP Ruby

我已经使用RVM安装了最新的稳定版Ruby,但是,我无法将其设置为默认版本。 运行 which ruby 始终 returns Ruby 在我的系统上随 MAMP 安装的路径,例如 /Applications/MAMP/Library/bin/ruby

我试过各种 rvm 命令都没有效果。我不想每次打开终端时都运行 rvm use 命令。

我正在使用 oh-my-zsh 和 iTerm2,如果它有所不同的话。

正如 Dave Newton 所建议的,这听起来像是一个 PATH 问题,但对于 MAMP,它也是一个 alias 问题。

如果您打开 ~/.profile~/.zprofile,您可能会在其中一个中看到这些行:

alias erb='/Applications/MAMP/Library/bin/erb'
alias gem='/Applications/MAMP/Library/bin/gem'
alias irb='/Applications/MAMP/Library/bin/irb'
alias rake='/Applications/MAMP/Library/bin/rake'
alias rdoc='/Applications/MAMP/Library/bin/rdoc'
alias ri='/Applications/MAMP/Library/bin/ri'
alias ruby='/Applications/MAMP/Library/bin/ruby'
alias rails='/Applications/MAMP/Library/bin/rails'

您需要将它们全部删除,保存文件,然后退出并重新启动 iTerm2。

如果您不知道如何打开和编辑点文件,请阅读我的指南,其中解释了 read and edit dotfiles on a Mac 的各种方法。

如果删除这些别名没有解决问题,那么这是一个 PATH 问题。

为了让您的 Mac 了解命令或其他可执行程序,必须告诉它在哪里寻找它。计算机在整个硬盘驱动器中搜索程序效率不高。

相反,它会查找特定的位置列表,这些位置存储在名为 PATH 的环境变量中,以冒号分隔。您可以在终端中通过 运行 此命令查看此列表:

echo $PATH

当您安装新程序时,例如 Ruby,它们可能会安装在 PATH 中尚未包含的位置。如果您不将这个新位置添加到 PATH,计算机将不知道要在那里寻找它,因此它认为它不存在。

类似地,如果新程序的位置 确实 已添加到 PATH,但同一程序的位置更早 PATH 中,那么它将始终使用它找到的第一个。

大多数 Ruby 版本管理器使用脚本来自动更新 PATH,他们会指示您在 shell 文件中添加一行来调用该脚本,否则他们可能为您添加。该行应该在 PATH.

的任何修改之后出现

自从我使用 RVM 以来已经有一段时间了(我不再推荐它),但我认为它应该自动将这一行添加到您的 shell 文件中:

source $HOME/.rvm/scripts/rvm

假设您正确安装了 RVM,我将尝试以下操作:

  1. 打开您的 shell 文件。如果您使用 oh-my-zsh.

    ,它应该是 ~/.zshrc
  2. 查找任何以 export PATH= 开头的行,如果它们提到 /Applications/MAMP/Library/bin/ruby,请从 PATH 中删除该目录。还要确保任何 PATH 行出现在 RVM 添加的行之前。

  3. 退出并重启 iTerm2

如果您在 ~/.zshrc~/.zprofile~/.profile 中没有看到任何 RVM-related 行,那么 RVM 没有正确安装。

如果您真的想使用RVM,请尝试卸载并重新安装它。如果您只关心有一个工作的 Ruby 环境,我会推荐 chruby 和 ruby-install。您可以按照我的 step-by-step guide to install Ruby on Mac.

安装它们