我刚安装了RVM,但不能正常工作。我在我的.profile文件的末尾有这样一行:
1
| [[ -s"$HOME/.rvm/scripts/rvm" ]] && ."$HOME/.rvm/scripts/rvm" |
我试着运行source .profile和重启终端,但当我运行rvm use 1.9.2时,我得到:
1
| RVM is not a function, selecting rubies with 'rvm use ...' will not work. |
我的系统是Ubuntu 11.10。
- 我建议你用Rbenv代替RVM。它不需要装进你的壳里。
- 当一个人在某些技术上遇到问题时,总是会有一个穿着闪亮盔甲的英雄,他有一个宝贵的建议,可以抛弃这些技术,安装一个完全不同的,绝对令人惊奇的,另一个没有退缩的技术。就好像我问了几个红宝石问题,那个英雄马上想出了"只是安装Java"=)
你需要运行以下程序
1
| $ source ~/.rvm/scripts/rvm |
然后运行这个
如果你得到
问题解决了。
您还需要运行user$ rvm requirements来查看操作系统的依赖性需求。
来源:https://rvm.io/rvm/install/
我忘记提到您需要将此代码放入~/.bashrc或~/.zshrc文件中,您将不需要再编写此代码。干杯!
- 这在OSX上非常有效。谢谢!
- 在Osx山狮工作
- 谢谢。在Ubuntu 10.04为我工作。
- 此解决方案仅在当前shell会话中有效。如果遵循此解决方案,则每次再次登录控制台时都必须重复这些步骤。更持久的解决方案是将以下内容添加到~/.bashrc文件中:如果test-f~/.rvm/scripts/rvm;则["$(type-t rvm)"="函数"]source~/.rvm/scripts/rvm fi
- 这真的应该出现在RVM的GNOME集成页面上,更加简洁,并且在运行kde&cinammon的mint nadia上表现得很有魅力。
- 如果在你做了这些之后它仍然不是一个函数呢?
- 如果@Stanley的解决方案不起作用,也可以这样做:stackoverflow.com/questions/820517/bashrc-at-ssh-login
- 我用这个从Ruby1.9.3更新到2.0.0,这是正确的方法吗?我得到"RVM不是函数错误"
- @Connorleech你使用了另一个终端会话吗?
- 这对LinuxMint Rebecca 17.1很有效。谢谢!
- 谢谢,它帮助我解决了我的问题。
- 省省我的一天,比我迄今为止看到的任何在线RVM帮助都要好,包括rvm.io/rvm/basics,这是一个漫长而无助的过程。
- 为什么不运行/bin/bash --login?那不管用吗?或者你只是不想每次都打出来?
- @斯坦利的解决方案-我得到了".bashrc:line 15:语法错误:意外的文件结尾"。但如果我把分号放在"fi"之前,它就不会出错。不幸的是,rvm后面仍然是"非函数"。
- 在收到消息"rvm is function"后,我甚至没有打"type rvm head-n 1"。当尝试打"rvm use…"时。
您没有使用登录shell。
这里描述了启用登录标志的过程,这里还可以找到有关登录shell的一些详细信息。
因此,您需要检查gnome终端设置中的"作为登录shell运行"选项。设置标志后,需要打开新的终端。
有时需要将命令设置为/bin/bash --login。
对于远程连接,重要的是要了解运行交互式ssh会话和执行单个命令之间的区别。
在运行ssh server然后以交互方式与服务器一起工作时,默认情况下使用的是登录shell,一切正常,但对于ssh server"command"而言,您不使用登录shell,需要使用ssh server 'bash -lc"command"'运行它。
任何远程调用都可能存在与使用ssh执行单个命令相同的问题。
- Mac上的等效解决方案是什么?
- 尝试rvm get stable --auto并检查终端设置
- 仅供参考:我们必须在设置后启动一个新的终端。
- @mpapis我如何设置gnome终端在远程服务器上"以登录shell的身份运行命令",我不能将x服务器转发到我的机器上?
- 检查远程连接的更新。
- 为了遵循@mpapis的建议,--auto被否决,赞成--auto-dotfiles,所以现在的命令是rvm get stable --auto-dotfiles。
- 如果有人知道如何在鲁本图改变这种设置,我们将不胜感激。Wash不确定它是否适合这里,所以我把它贴到了询问Ubuntu。
- 脚本源于*profile文件而不是*rc文件的原因是什么?
- 我不知道我的shell是如何注销的,但是不管怎样,关闭你的终端并再次打开它,这对我很有用。
- 如果使用zsh,可以将[[ -s"$HOME/.rvm/scripts/rvm" ]] && source"$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*添加到.zshrc文件中。找到它,再试一次,它会起作用的。如果在部署服务器上使用zsh,则特别有用。
- @Vishnunarang您的解决方案不使用登录shell,正如我在回答中提到的,使用登录shell很重要。
要永久解决此问题,只需剪切/粘贴以下行:
[[ -s"$HOME/.rvm/scripts/rvm" ]] && source"$HOME/.rvm/scripts/rvm"
发件人:~/.bash_profile文件
收件人:~/.bashrc文件
这样做的原因是,每次进入终端时执行.bashrc,每次登录时执行.bash_profile。这就是解决方案/bin/bash --login工作的原因,但每次进入终端时都必须这样做。这样,您将一直设置到下一个格式,到那时您将忘记所有这些内容:)
- 作为一个屏幕用户,我总是需要把这行放在~/.bashrc而不是~/.bash_profile中。
- 谢谢!我为GNOME登录所需的两秒钟延迟而非常烦恼。这将防止这种延迟。
- 为什么RVM安装不自动执行此操作?
- @mpapis是rvm的发布管理器,他说这样做"可能会使x会话失败(如果我能正确调用fedora 17),它会使rsync会话失败…还有更多我现在记不起来的原因。我想我还是坚持使用`/bin/bash——登录。
我也面临这个问题。最后我在终端上执行了这一行。
1
| source ~/.rvm/scripts/rvm |
问题已解决。因为这一行将使RVM实例在特定的时间内成为一个函数。
- 最简单的答案。只要把这条线放到您的~/.bashrc中,您就可以使用任何终端模拟器了。
- 嗨-虽然这个命令"修复"了我参加的学期课程,但结果并不粘人,对新的(或其他)学期课程没有帮助。桌面似乎也不知道这些变化。我也是"反"登录的,因为它是基于每个会话/登录的。我个人希望能够将同一个程序与不同的Ruby-S和版本进行比较。
- 你是最有价值球员。在我试过之前,其他的都没用。我不在乎这是不是暂时的,我只是需要一个解决办法。
- RVM的安装文件在哪里,所以在安装时,它会处理这些问题和其他问题?我使用了他们主页上描述的流程,花了好几个小时试图让它"只工作"。应该是像"yum-install-rvm"这样的东西,所有的事情都已经完成并准备好了。
最新的RVM(RVM 1.11.6(稳定版))停止了Ubuntu(10.10-64位-nerdy-gnat或其他东西)的工作-我不断地得到
"RVM不是一个函数,选择带有"RVM USE…"的红宝石将不起作用。"
之前,我收到了消息,但是"rvm 1.9.3-p0@rails321"可以工作。现在,它不起作用了-你根本不能换宝石。
在我找到这个之前,什么都没用——把这句话当作江户的最后一句话。
[[ -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-i添加了source~/.bash_登录名,该登录名位于.bashrc结尾和任何在中游中更改gemes的脚本的开头。
正如您所说,显示的错误可能是以下错误。
1 2 3 4 5
| 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. |
如前所述,只需在终端中键入"/bin/bash--login"(重新启动终端后),然后键入com和"rvm use 1.9.3"(例如),它将开始使用相同的版本。
只需执行命令'ruby-v'以确认RVM使用的是Ruby的更新版本。
我在一个新的RVM安装上也遇到了这个问题,这里的答案都没有解决。进入官方的RVM站点,在基础部分,他们有以下命令:
# from http://rvm.io/rvm/basics
source $(rvm 1.9.3 do rvm env --path)
您应该为实际需要的Ruby版本更改1.9.3,它将使rvm成为一个函数,而不管shell类型如何。
也许你可以试试下面的:
- 您的终端->
- 编辑>
- 配置文件首选项->
- 标题和命令->
- 检查"作为登录shell运行命令"
- 多恩
- 这是最简单的解决方案,也是正确的解决方案,因为普通shell跳过.profile,使用此选项将导致它加载,根本不需要编辑.bashrc。
运行bash --login,然后运行rvm use 2.0.0。
即使你接受了一个答案,我还是想建议另一种方法……~/.bashrc在打开任何shell之前加载。在末尾加上这一行,你就不需要任何登录外壳了。
- "登录shell的事情"是有原因的,我用rvm sourcing做了很多测试,这是保证工作不被发现和难以解决错误的唯一方法。
- 这对我也不管用。使用Mac OS X Lion。
- @你能解释一下原因吗?从其他答案来看,大多数人似乎可以将行移动到rc文件
- 例如,它可以使X会话失败(如果我正确调用,则为Fedora 17),它会使rsync会话失败…还有更多我现在想不起来的原因
打开终端,然后转到编辑>配置文件首选项,然后转到选项卡"标题和命令",并选中"作为登录shell运行命令"。
启动一个bash,现在您可以直接从终端安装gems,而不使用sudo,错误"rvm不是一个函数,选择带有"rvm use…"的rubies将不起作用。"将被消除。
干杯。
以上答案均有效。但当我面临同样的问题时,解决方法如下:
- 更新ZSH。(由于某种原因,试图直接更新DIN不工作。所以从这里卸载并重新安装了更新版本)
- 使用sudo chsh -s $(which zsh) $USER将默认shell设置为zsh(即,如果您喜欢zsh)。
在安装了最新的RVM(可能使用官方RVM站点的curl)之后,确保以下代码位于.zshrc的底部
1 2
| [[ -s"$HOME/.rvm/scripts/rvm" ]] && ."$HOME/.rvm/scripts/rvm"
source ~/.profile |
最重要的一点:确保在您的.zshrc文件中,每个到PATH的导出都附加了:$PATH文件。我认为这是我的问题的根源,即使在遵循上述步骤之后。
在这之后,我所有关于RVM不是一个函数的问题都消失了。如果它仍然不起作用,请在这里进行一些错误跟踪。经过几个小时的努力,我确信我已经看到了所有相关的错误。
希望它有帮助。干杯!
- 是的,先生。这对我很有用。不明白最重要的一点,但它起作用了。
- 当您尝试安装RVM时,如果您有export PATH="/usr/bin:",它会给出警告。它将要求您在其中附加$PATH。这是我的一个问题的原因。因此,每个export PATH都应该附加$PATH,以便在输出之前,无论PATH变量附加了什么。不管怎样,很好,这是有帮助的。
在Mac OSX 10.8 Mountain Lion上安装Ruby 1.9.3-P125的步骤
您已经安装了最新的xcode(>=4.3)和命令行objective-c编译器"clang"。
必须运行"bash"shell,此过程才能工作。
转到系统首选项
单击"用户和组"
单击面板左下角的锁并输入密码以将其解锁。
在面板左窗格中的用户图标上单击"ctrl",然后选择"高级选项…"
将登录shell更改为"/bin/bash"
关闭首选项
打开终端窗口(按命令+空格键并键入"终端")。
请遵循以下说明:
http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/
笔记:
要安装Ruby,您可能需要指定clang编译器:
$rvm安装1.9.3p125——GCC=clang
如果未找到rvm gripes about/usr/local/rvm,则需要创建一个链接:
$ln-s/user s/[您的用户名]/.rvm/usr/local/rvm
- 我想他们已经到了1994页了。如果您安装了rvm 1.9.3——使用gcc=clang,您将自动获得1.9.3的最新版本。
- 这是OSX上的永久解决方案。谢谢!
…应该做的技巧…,可能需要注销和再次登录。
如何从命令行重新加载.bash_概要文件?
?官员?说明如下:https://rvm.io/integration/gnome-terminal/
我通过将这一行添加到.bash_profile来修复它:
1
| [[ -s"$HOME/.rvm/scripts/rvm" ]] && source"$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* |
我有同样的问题,我在我的.bash_个人资料中做了这个,它起作用了。source"$HOME/.rvm/scripts/rvm"。
对于那些有相同问题的人,他们像我一样使用lubuntu,我遵循以下链接:
你用
lxterminal -e"bash -il"
感谢@mpapsis为我指明了正确的方向
- 因为链接有时是短暂的,所以最好在你的答案中粘贴一个小的概要,为子孙后代。
我也有同样的错误,因为我曾经用apt-get命令安装过旧的RVM版本RubyRVM。
我通过删除脚本行来配置.bashrc文件中的旧rvm来解决这个问题。
检查旧的rvm配置脚本,然后运行source.profile
我也有同样的错误,但这一页上的解决方案似乎都不起作用。对我来说,将rvm可执行文件添加到我的路径中就足够了:
1
| PATH=$PATH:/usr/local/rvm/bin/ |
瞧!