“RVM不是功能”错误

“RVM不是功能”错误

问题描述:

RVM安装在我的机器上(运行Mac OSX 10.6.8),正确并且运行良好。奇怪的是,要运行它,我必须在每个新的会话中使用source ~/.rvm/scripts/rvm。我尝试从它制作一个符号链接到/opt/local/bin/rvm,但是当它运行时它什么都不做。我也尝试创建从~/.rvm/bin/rvm/opt/local/bin/rvm的符号链接,当我在终端中运行rvm时,它会按预期显示帮助页面。但是当我尝试rvm use some_ruby_version时,它总是显示“RVM不是一个函数,选择使用'rvm use ...'的红宝石将不起作用。”我怎样才能解决这个问题?“RVM不是功能”错误

我的目标是让我的不要必须在每个会话中键入源命令,并且由于某种原因~/.profile不会执行。

+2

你有没有尝试添加了必要的行'〜/ .bash_profile'?在我的Mac上,至少那是我在添加路径/函数到我的bash时需要编辑的那个。 – user2398029 2012-03-17 18:52:45

我不明白~/.profile正确地做;我需要改变~/.bash_profile。问题解决了!

+0

将这些行添加到您的bashrc文件中 – pradeek 2014-06-19 12:42:28

您必须将RVM脚本编入当前会话,因为它会更改shell环境 - 并且从子进程完成该操作是绝对不可能的。您将RVM作为外部命令运行的努力无法成功。

要真正解决这个问题,你有两个选择:

  1. 配置您的终端模拟器启动登录shell,而不是一个非登录外壳,让您的.profile被加载。
  2. 修改.bashrc来源代替RVM,它也适用于非登录shell。

要做到只需将它添加到~/.bashrc第二:

if test -f ~/.rvm/scripts/rvm; then 
    [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm 
fi 
+4

请不要在〜/ .bashrc中向源RVM做广告,这不是正确的解决方案,点1是最好的方法,这里有一些细节:https://rvm.beginrescueend.com/support/faq/# shell_login – mpapis 2012-03-17 19:38:57

+0

@mpapis啊,我只是认为〜/ .profile做了〜/ .bash_profile的工作;问题解决了。 – Jwosty 2012-03-17 20:50:42

如果您正在使用的zsh作为外壳,而不是bash中,你必须:

1.

vi ~/.zshrc 

2. 像马特说,添加:

if test -f ~/.rvm/scripts/rvm; then 
    [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm 
fi 

3.重新启动Terminall 4.完成!

rvm use 1.9.3 

威尔工作

+2

像zsh shell一样具有魅力! – 2013-10-16 13:33:04

你必须做一些设置。

打开终端并运行此命令。

source ~/.rvm/scripts/rvm 

,然后去edit > Title and command和检查Run command as login shell

和你做。现在你不需要每次都指定源。

当我成为root时,我遇到了这个问题。我尝试了上面的许多解决方案。终于成功的是从根本上退出并成为普通用户。无论如何,这是我所需要的。

那么,与山狮(10.8.3)什么工作对我来说是编辑/ etc/profile文件

,并添加到文件底部前面提到的行:

if test -f ~/.rvm/scripts/rvm; then 
     [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm 
    fi 

我同样的问题。我发现了.profile文件没有得到更新,所以我说这是加入到.bash_profile中相同的命令:

[-s “$ HOME/.rvm /脚本/ RVM”]] & &源“$ HOME/.rvm /脚本/ RVM”

我不知道这是正确的方式,但它的工作...

+0

将这些行添加到〜/ .bashrc配置文件中,它将起作用 – pradeek 2014-06-19 12:41:34

这些解决方案似乎没有赎回我的问题,这是在Ubuntu 12.04 LTS 。

我所做的是以下几点:

  1. rvm get stable --auto-dotfiles作为RVM文档here
  2. 新增source ~/.profile作为第一行中概述:〜/ .bash_profile中

我不会全部这些步骤被记录为来自RVM命令行的错误:

RVM不是一个函数,选择'rvm use ...'的红宝石不会 工作。您需要更改您的终端仿真器首选项以允许登录shell。有时需要使用/bin/bash --login作为 该命令。例如,请访问https://rvm.io/integration/gnome-terminal/

  • 警告:你有 '〜/ .profile文件' 的文件,你可能想加载它, 做添加以下行到一个“/ home/USER_NAME /的.bash_profile':

    源〜/ .profile中

你不应该像别人所说的那样编辑任何东西。只需进入终端的设置并选择“作为登录shell运行命令”。这将导致.profile在下一个终端实例上运行。重新打开你的终端,你应该可以使用rvm use 1.9.3(或者你安装的任何版本)。

上rvm.io找到更多信息(这也是答案的好地方)

https://rvm.io/integration/gnome-terminal

什么拧我是假设我的道路是正确的,因为我用的是一个我可以手动运行。

显然有不同的可执行文件或脚本可以使用,并位于不同的地方。

我认为米娜应该使用的路径是这样的:

/usr/local/rvm/bin/rvm 

当在现实中却是这样的:

/usr/local/rvm/scripts/rvm