我已经在系统范围内安装了 rvm + ruby。
which ruby
/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby
和:
/usr/bin/env: ruby: No such file or directory
其他一切都运行良好,将 ruby 的直接路径放入我的可执行文件中也可以正常工作。
答案1
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
答案2
我意识到这是一个有点老的问题,但是我花了一天多的时间试图解决这个问题,并且我发现了一种我认为可靠的最佳实践类型的解决方案——使用包装rvm
器。
/usr/bin/env ruby
使您能够使用您选择的 Ruby 版本,这样您就不必使用/bin
硬编码目录路径编辑可执行 shell 脚本(在)来使其工作(我已在其他地方看到过这是建议的修复方法)。
正如上面的答案所述,关键在于$PATH
中的设置/etc/environment
,但我想出了不同的解决方案。
RVM 为我们提供了所有已安装的 ruby 版本和别名的符号链接目录/usr/local/rvm/wrappers/
。
如果你将$PATH
var 设置为使用与要使用的 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
可以工作。
至少这为我解决了这个问题。我希望这可以帮助人们节省一些时间。
答案3
我最近遇到了这个问题,并采取了不同的方法,所以想分享一下。当提到的目录中没有 ruby 文件时,就会发生这种情况。因此,在目录中创建指向 ruby 文件的符号链接,您的错误应该会得到修复。
cd /usr/bin/env
ln -s /usr/local/rvm/rubies/ruby-2.1.1/bin/ruby
答案4
我遇到了同样的错误
#!/usr/bin/env ruby
在我的脚本顶部导致
rvm /usr/bin/env: ruby no such file error
如果我执行该脚本。
我的解决方案很简单,但很难找到:
我的脚本/源代码编辑器中的换行符编码设置为“Windows 样式 (CR + LF)”。
将其切换为“unix 样式 (LF)”并再次保存脚本后,错误就消失了。
似乎回车符 (CR) 留在了“红宝石”后面,所以没有ruby filname.script
导致ruby\R filename.script
错误的。