rvm /usr/bin/env: ruby没有找到文件错误

我已经在整个系统中安装了RVM + Ruby。
which ruby
/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby

并且:

/usr/bin/env: ruby: No such file or directory

一切其他都正常工作,直接在我的可执行文件中放置Ruby的路径也正常。

你是否将"/usr/local/rvm/rubies/ruby-2.1.1/bin"添加到"/etc/login.defs"中的"PATH"中了? - Elliott Frisch
4个回答

PATH 是 env 程序用来搜索可执行文件的路径。您可以按用户更改此路径(在 $HOME/.bashrc 中)。为了做到这一点,运行 nano $HOME/.bashrc 并转到最后一行,添加一个新行。
export PATH=$PATH:/usr/local/rvm/rubies/ruby-2.1.1/bin

要在系统级别更改它,你需要使用sudo nano /etc/login.defs命令,并修改这一行。
ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/rvm/rubies/ruby-2.1.1/bin

实际上,我也遇到了同样的错误。ENV_PATH 没有起作用。我已经将它添加到普通用户和超级用户的 ENV_PATH 中。登录文件是否是无界面 bash 的正确文件? - user25389
2在Ubuntu中,PATH变量是在/etc/environment中设置的。我会在那里进行更改,而不是在/etc/login.defs中。 - Gunnar Hjalmarsson
1@GunnarHjalmarsson 看起来是个更好的地方,是的。但这并不能解决问题。 - user25389
我尝试了这个解决方案,但不知何故在ruby-2.2.2和Ubuntu 14.04.2 LTS上无效。 - AMIC MING

我意识到这是一个有点旧的问题,但我花了一天时间来解决这个问题,并找到了我认为是一个可靠的最佳实践类型的解决方案——使用rvm包装器。 /usr/bin/env ruby使您能够使用您选择的Ruby版本,因此您不必编辑可执行的shell脚本(在/bin中)并在其中固定目录路径以使其工作(我在其他地方看到过这样的建议修复方法)。
如上面的答案所指出的那样,关键在于/etc/environment中的$PATH设置,但我想出了一个不同的解决方案。
RVM为我们提供了一个符号链接目录,其中包含所有已安装的Ruby版本和别名,位于/usr/local/rvm/wrappers/
如果您将您的$PATH变量设置为使用与您想要使用的Ruby版本相关联的包装器目录,例如
PATH="/usr/local/rvm/wrappers/ruby-1.9.3-p547:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

你需要设置RVM环境,使得/usr/bin/env ruby_command能够正常工作。
至少这对我解决了问题。希望能帮助到其他人节省些时间。

我尝试了这个解决方案,但不知何故在ruby-2.2.2和Ubuntu 14.04.2 LTS上无效。 - AMIC MING
有什么错误?在Ubuntu上安装Ruby 2.2.+时出现了一些问题:http://ryanbigg.com/2014/10/ubuntu-ruby-ruby-install-chruby-and-you/ 我仍在使用v1.9.3——不想升级。 - Va As

我最近遇到了这个问题,并采取了不同的方法,所以想分享一下。当在指定的目录中找不到 Ruby 文件时,就会出现这个问题。因此,在该目录中创建一个符号链接到 Ruby 文件,你的错误应该就会被修复。
cd /usr/bin/env ln -s /usr/local/rvm/rubies/ruby-2.1.1/bin/ruby

4你好Nihanth,谢谢你的回答!在Ubuntu机器上,/usr/bin/env不是一个目录。此外,您的链接命令缺少一个参数。 - Matt Bruzek

我遇到了同样的错误。
在我的脚本顶部加上#!/usr/bin/env ruby导致了这个问题。
rvm /usr/bin/env: ruby no such file error

如果我执行脚本的话。
我的解决方案很简单,但却难以找到:
我的脚本/源代码编辑器中的换行符编码设置为"windows风格(CR + LF)"。
将其切换到"unix风格(LF)"并重新保存我的脚本后,错误消失了。
看起来回车符(CR)被留在"ruby"之后,所以没有ruby filname.script而是ruby\R filename.script,这导致了错误。