rvm安装无法正常工作:"RVM不是一个功能"

amo*_*fis 227 ruby rvm

我刚刚安装了RVM,但无法使其正常工作.我的.profile文件末尾有这样的行:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)

我试图运行source .profile并重新启动终端,但仍然,当我运行时,rvm use 1.9.2我得到:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.
Run Code Online (Sandbox Code Playgroud)

我的系统是Ubuntu 11.10.

Jor*_*cía 431

您需要运行以下命令

$ source ~/.rvm/scripts/rvm
Run Code Online (Sandbox Code Playgroud)

然后运行这个

$ type rvm | head -n 1
Run Code Online (Sandbox Code Playgroud)

如果你得到

rvm is a function
Run Code Online (Sandbox Code Playgroud)

问题已经解决了.

您还需要运行user$ rvm requirements以查看操作系统的依赖性要求

资料来源:https://rvm.io/rvm/install/

我忘了你需要把这段代码放到〜/ .bashrc或〜/ .zshrc文件中,你不需要再写这段代码了.干杯!

  • 此解决方案仅适用于当前的shell会话.如果您遵循此解决方案,则每次再次登录控制台时都必须重复这些步骤.更永久的解决方案是将以下内容添加到〜/ .bashrc文件中:if test -f~/.rvm/scripts/rvm; 然后["$(type -t rvm)"="function"] || source~/.rvm/scripts/rvm fi (19认同)
  • 谢谢.在ubuntu 10.04上为我工作. (2认同)

mpa*_*pis 229

您没有使用登录shell.

此处描述了启用登录标志的过程,还可以在此处找到有关登录shell的详细信息.

因此,您需要在Gnome终端的设置中选中"作为登录shell运行"选项.在设置标志后需要打开新的终端.

有时需要将命令设置为/bin/bash --login.


对于远程连接,了解运行交互式ssh会话和执行单个命令之间的差异非常重要.

在运行ssh server然后以交互方式使用服务器时,您默认使用登录shell并且一切正常,但是因为ssh server "command"您没有使用登录shell而且需要运行它ssh server 'bash -lc "command"'.

任何远程调用都可能与执行单个命令时遇到相同的问题ssh.

  • 为了遵循@ mpapis的建议,`--auto`已被弃用,而不是`--auto-dotfiles`,所以命令现在是'rvm get stable --auto-dotfiles` (12认同)
  • fyi:我们必须在设置之后开始新的终端. (10认同)
  • 尝试`rvm get stable --auto`并检查你的终端设置 (8认同)
  • mac上的等效解决方案是什么? (4认同)
  • @mpapis如何在远程服务器上将gnome-terminal设置为"Run command as login shell",我无法将X服务器转发到我的机器上? (2认同)

Har*_*ina 102

要永久解决此行,只需剪切/粘贴以下行:

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

来自:~/.bash_profile档案

收件人: ~/.bashrc档案

这有效的原因.bashrc是每次进入终端时都会执行,.bash_profile每次登录时都会执行.这就是解决方案/bin/bash --login有效的原因,但每次进入终端时都必须这样做.这样你就可以设置到下一个格式了,然后你会忘记所有这些:)

  • 为什么rvm安装不会自动执行此操作? (5认同)
  • 谢谢!我对gnome登录所需的两秒延迟感到非常困扰.这将防止这种延迟. (2认同)

Bas*_*bin 29

我也遇到了这个问题.最后我在终端上执行了这一行.

source ~/.rvm/scripts/rvm
Run Code Online (Sandbox Code Playgroud)

问题是固定的.因为这一行将使RVM实例成为特定时间的函数.

  • 最简单的答案.只需将该行放入〜/ .bashrc即可,您可以使用任何终端模拟器. (2认同)

Rod*_*lin 21

最新的RVM(rvm 1.11.6(稳定版))停止在Ubuntu(10.10 - 64位 - 书呆子gnat或其他什么)上工作 - 我一直在

"RVM不是一个功能,用'rvm use ...'选择红宝石是行不通的."

以前,我收到了消息,但'rvm 1.9.3-p0@rails321'会有效.现在,它不起作用 - 你根本无法改变宝石.

没有什么工作,直到我发现这一点 - 使这成为最后一行 /home/your-name/.bashrc

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

  • "rvm get stable --auto"添加到.bash_login [[-s"$ HOME/.rvm/scripts/rvm"]] && source"$ HOME/.rvm/scripts/rvm"并将其从.bashrc中删除 - 我在.bashrc的末尾添加了源〜/ .bash_login,并在任何更改中间的gemsets的脚本的BEGINNING中添加了 (2认同)

Raj*_*tan 9

如您所说,显示的错误可能是以下错误.

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.
Run Code Online (Sandbox Code Playgroud)

如上所述,只需在终端中输入' / bin/bash --login '(重新启动终端后),然后输入命令'rvm use 1.9.3'(例如),它将开始使用相同的版本.

只需执行命令'ruby -v'即可确认RVM正在使用Ruby的更新版本.


vca*_*les 8

我在一个新的rvm安装上也遇到了这个问题,这里的答案没有修复它.进入官方rvm站点,在基础部分,他们有这个命令:

#来自http://rvm.io/rvm/basics

source $(rvm 1.9.3 do rvm env --path)

您应该为您真正想要的ruby版本更改1.9.3,并且无论shell类型如何,它都将使rvm成为函数.


kap*_*v89 7

即使你接受了答案,我还想建议另一种方式..~/.bashrc在打开任何shell之前加载.在该行的末尾添加该行,并且您不需要任何该登录shell的东西


Feu*_*uda 7

也许你可以尝试下面的:

  • 你的终端 - >
  • 编辑 - >
  • 档案首选项 - >
  • 标题和命令 - >
  • 检查"运行命令作为登录shell"
  • 完成


小智 6

运行 bash --login然后运行rvm use 2.0.0.