2012-02-17 86 views
215

我刚安装了RVM,但无法使其工作。我有这样的线在我的.profile文件的末尾:rvm安装不工作:“RVM不是功能”

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

我试图运行source .profile并重新启动终端,不过,当我运行rvm use 1.9.2我越来越:

RVM is not a function, selecting rubies with 'rvm use ...' will not work. 

我的系统是Ubuntu 11.10。

+1

我推荐你[rbenv](https://github.com/sstephenson/rbenv)作为RVM的替代品。它不需要加载到你的shell中。 – drinor 2015-04-28 10:46:59

+1

无论哪个人在某些技术上有问题,总会有一位英雄穿着闪亮的盔甲,并提供宝贵的建议来抛弃该技术,并安装完全另类的绝对令人惊叹的另一个没有缺点的建议。这就好像我问了一些红宝石问题,并且英雄立刻想出了“只需安装java”=) – Clergyman 2017-07-08 14:52:44

回答

218

您未使用登录shell。

启用登录标志的过程描述为here,还可以找到有关登录shell的详细信息here

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

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


对于远程连接它理解运行交互式ssh会话和执行单命令之间的differene是重要的。

在运行ssh server,然后与服务器交互的工作你默认使用的登录shell,这一切都很好,但对于ssh server "command"不使用登录shell,它会被要求与ssh server 'bash -lc "command"'运行它。

任何远程调用都可能与执行单个命令ssh具有相同的问题。

+4

在mac上的等效解决方案是什么? – 2012-05-08 16:39:01

+7

试试'rvm get stable --auto'并检查你的终端设置。 – mpapis 2012-06-15 16:41:26

+8

fyi:设置完后,我们必须启动一个新的终端。 – oma 2012-09-12 17:09:48

0

我得到了同样的错误,因为我曾经用apt-get命令安装了旧的rvm版本ruby-rvm。

我通过删除脚本行来配置旧的rvm .bashrc文件来解决问题。

检查旧RVM配置脚本,然后运行源.profile文件,即使你接受了答案

5

,我想建议另一种方式的任何外壳打开之前..〜/ .bashrc中被加载。在最后添加该行,并且不需要任何登录shell的东西

+0

“是登录shell的事”是有原因的,我已经做了很多的测试与RVM采购和它是保证工作,而检测不到和难以解决的错误的唯一方法 – mpapis 2012-03-30 07:54:32

+0

这并没有为我工作的。使用Mac OS X Lion。 – 2012-05-08 16:39:22

+0

@mpapis你能解释一下原因吗?从其他的答案,看起来像大多数的罚款与移动线RC文件 – balki 2015-11-01 21:42:07

19

最新的RVM(rvm 1.11.6(stable))在Ubuntu上停止工作(10.10 - 64位 - nerdy gnat或不管怎么说) - 我不断收到

“RVM不是一个函数,选择'rvm use ...'的红宝石将不起作用。”

之前,我收到了消息,但'rvm [email protected]'可以工作。现在,它不会工作 - 你根本无法改变宝石。

毫无效果,直到我发现了这个 - 使这最后一行在/home/your-name/.bashrc

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

+0

更正。这样做: – 2012-04-05 17:01:27

+2

“RVM获得稳定--auto” 加入到.bash_login文件[-s “$ HOME/.rvm /脚本/ RVM”]] &&源 “$ HOME/.rvm /脚本/ RVM”,并从它删除.bashrc - 我在.bashrc的末尾添加了source〜/ .bash_login,并且在中期修改了gemsets的任何脚本的开始日期 – 2012-04-05 17:26:49

398

您需要执行以下

$ source ~/.rvm/scripts/rvm 

然后运行这个

$ type rvm | head -n 1 

,如果你得到

rvm is a function 

问题解决了。

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

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

我忘记提到,你需要把这个代码放到你的〜/ .bashrc或〜/ .zshrc文件,你不需要再次写这个代码。干杯!

+1

这对OSX来说是完美的。谢谢! – cavneb 2012-07-12 21:41:48

+1

在OSX Mountain Lion上工作 – pws5068 2012-08-16 07:42:35

+2

谢谢。在Ubuntu 10.04上为我工作。 – vekozlov 2012-09-05 18:08:22

3

程序在Mac OSX上安装Ruby 1.9.3-P125 10.8山狮

  1. 你已经安装了最新的XCode(> = 4.3)和命令行Objective-C 编译器“clang”。
  2. 您必须运行“bash”shell才能使此过程正常工作。
  3. 进入系统设置的“用户&组”
  4. 点击单击面板左下角的锁并输入您的密码才能解锁。
  5. 您的用户图标,在面板的左侧窗格中“按住Ctrl单击”选择“高级选项...”
  6. 更改登录shell“/斌/庆典”
  7. 关闭喜好
  8. 打开终端窗口(按命令+空格键和输入 “终端”)
  9. 在按照说明:

http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/

注:

  • 安装Ruby,你可能需要指定铛编译:

    $ RVM安装1.9.3p125 --with-GCC =铛

  • 如果RVM抱怨大约在/ usr/local/rvm找不到,需要创建一个链接:

    $ ln -s/Users/[你的用户名] /。RVM在/ usr /本地/ RVM

+0

我认为他们现在已经达到了P194。如果您使用rvm install 1.9.3 --with-gcc = clang,您将自动获得最新版本的1.9.3。 – 2012-08-18 18:25:56

+0

这可以作为OSX的永久解决方案。谢谢! – nilesh 2014-02-22 20:40:18

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. 

如以上所述,只需要输入“/斌/庆典--login”在终端(重新启动后终端),然后键入COMAND“RVM使用1.9.3”(用于例如)和它将开始使用相同的版本。

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

95

要永久解决这只是剪切/粘贴以下行:

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

来源:~/.bash_profile文件

要:~/.bashrc文件

原因这部作品是.bashrc每次执行你输入终端,并且每次登录时都会输入.bash_profile。这就是为什么解决方案/bin/bash --login有效,但每次进入终端时都必须这样做。这种方式,你都设置到你的下一格式,你会忘记这一切的呢:)

+0

作为一个屏幕用户,我总是需要把这行放在'〜/ .bashrc'而不是'〜/ .bash_profile'中。 – ryenus 2014-05-11 04:27:57

+2

谢谢!我对gnome登录所需的两秒延迟感到非常困扰。这将防止这种延迟。 – KLVTZ 2014-05-31 22:08:35

+3

为什么rvm安装不会自动执行此操作? – balki 2015-11-01 21:39:30

0

我有同样的错误,但没有此页面上的解决方案,似乎工作。对我来说,这已经足够给rvm可执行文件添加到我的路径:

PATH=$PATH:/usr/local/rvm/bin/ 

的Et瞧!

7

也许你可以试试初级讲座:

  • 您的终端 - >
  • 编辑 - >
  • 档案首选项 - >
  • 标题和命令 - >
  • 选中“运行命令登录外壳“
  • 完成
+0

这是最简单的解决方案和正确的解决方案,因为正常的shell会跳过.profile,使用此选项将导致它加载并且根本不需要编辑.bashrc。 – DWils 2014-04-05 20:56:10

4

打开了终端,然后转到编辑>配置文件首,然后去标签“标题和命令”并勾选“运行命令登录shell”。

启动一击,现在你可以直接从终端无需使用sudo的和错误的安装宝石“RVM不是一个函数,选择红宝石与‘RVM使用......’将无法工作。”将被淘汰。

干杯。

4

以上所有答案都是有效的。但是当我遇到同样的问题时,解决方案如下:

  • 更新ZSH。 (由于某种原因试图直接更新不要工作。从here的zsh(也就是说,如果你喜欢的zsh使用sudo chsh -s $(which zsh) $USER
  • 所以卸载并重新安装更新版本)

  • 设置默认的shell)确保下面的代码是在您.zshrc的底部才能在安装后的最新RVM可能使用从official RVM site

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" 
    source ~/.profile 
    
  • 最重要的一点卷曲:确保您的.zshrc文件中的每个出口PATH附有:$PATH。即使在遵循上述步骤之后,我相信这也是我的问题的根源。

  • 发布这个所有我的问题RVM不是一个功能走了。如果它仍然不起作用,请在这里给出一些错误追踪。经过几个小时的努力来解决这个问题,我相信我一定看过所有相关的错误。

希望它有帮助。干杯!

+0

是的,先生。这对我有效。没有理解最重要的点部分,但它工作。 – Ricbermo 2014-01-12 15:40:39

+0

当您尝试安装RVM时,如果您具有'export PATH =“/ usr/bin:”',它会发出警告。它会要求你在它后面追加'$ PATH'。这是我的一个问题的原因。因此,每个'export PATH'应该附加'$ PATH',以便在导出之前,无论PATH变量被追加。无论如何,这很有帮助。 – 2014-01-15 08:56:35

8

我在新鲜的rvm安装上也遇到了这个问题,而且这里的答案都不是固定的。进入官方网站RVM,对基础知识部分,他们有这样的命令:

# from http://rvm.io/rvm/basics

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

你应该改变1.9.3对于你真正想要的红宝石版本,它会让RVM无论功能外壳类型。

27

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

source ~/.rvm/scripts/rvm 

问题已修复。因为这一行将使RVM实例在特定时间内成为函数。

+2

最简单的答案。只需将该行放入你的〜/ .bashrc中,你就可以使用任何终端模拟器。 – Nikkolasg 2015-08-21 10:36:51

+0

嗨 - 虽然这个命令'固定'了我参加的术语会话,但结果并不是_sticky_,也没有帮助新的(或其他)术语会话。而且桌面似乎也不了解这些变化。我也是“反”登录的东西,因为它是每个会话/登录的基础。就我个人而言,我希望能够将相同的程序与不同的Ruby-s和版本进行比较。 – will 2015-10-07 11:50:49

+0

你是真正的mvp。除非我尝试过,否则没有其他工作。我不在乎这是否是暂时的,我只需要修复。 – 2015-10-22 16:48:29

4

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

0

我有同样的问题,我做了这个在我的.bash_profile,它的工作。 source "$HOME/.rvm/scripts/rvm"

0

对于那些谁配有同样的问题,我跟着这个link他们使用lubuntu我一样:

您与

lxterminal -e "bash -il"

谢谢启动终端@mpapsis谁向我指出了正确的方向

+0

由于链接有时是暂时的,因此在答案中为后人贴上一个小小的摘要可能是一个好主意。 – 2017-01-17 16:05:59

0

我固定它通过加入这一行对.bash_profile:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*