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

时间:2012-02-17 22:54:18

标签: ruby rvm

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

[[ -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。

21 个答案:

答案 0 :(得分:418)

您需要运行以下

$ source ~/.rvm/scripts/rvm

然后运行此

$ type rvm | head -n 1

如果你得到

rvm is a function

问题解决了。

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

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

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

答案 1 :(得分:227)

您没有使用登录shell。

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

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

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


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

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

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

答案 2 :(得分:101)

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

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

来自:~/.bash_profile档案

收件人:~/.bashrc文件

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

答案 3 :(得分:29)

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

source ~/.rvm/scripts/rvm

问题得到解决。因为这一行会使RVM实例成为特定时间的函数。

答案 4 :(得分:21)

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

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

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

在我发现这一点之前没有任何效果 - 将其作为/home/your-name/.bashrc

中的最后一行

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

答案 5 :(得分: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.

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

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

答案 6 :(得分:8)

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

  

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

     

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

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

答案 7 :(得分:7)

也许你可以试试下面的内容:

  • 您的终端 - >
  • 编辑 - >
  • 个人资料首选项 - >
  • 标题和命令 - >
  • 检查"运行命令作为登录shell"
  • 完成

答案 8 :(得分:6)

运行1 require 'rubygems' 2 require 'nokogiri' 3 require 'net/https' 4 require 'openssl' 5 require 'mechanize' 6 7 # JenkinsXML logs into Jenkins and gets an XML version of the HTML page. 8 9 class JenkinsXML 10 11 # Jenkins' URIs. 12 @@jenkins_login_uri = "https://jenkinspage.com:8443/login?from=%2F" 13 @@jenkins_page_uri = "https://jenkinspage.com:8443" 14 15 # Log into Jenkins. 16 def log_into_jenkins 17 @@mechanize_agent = Mechanize.new 18 @@mechanize_agent.user_agent_alias = "Windows IE 7" 19 @@mechanize_agent.verify_mode = OpenSSL::SSL::VERIFY_NONE 20 page = @@mechanize_agent.get(@@jenkins_login_uri) 21 22 form = page.forms[1] 23 24 form.j_username = "username-here" 25 form.j_password = "password-here" 26 @@mechanize_agent.submit(form) 27 end 28 29 # Get Jenkins' HTML. 30 def get_jenkins_html 31 @@jenkins_html = @@mechanize_agent.get(@@jenkins_page_uri).body 32 end 33 34 # Get Jenkins' XML. 35 def get_jenkins_xml 36 @jenkins_xml = Nokogiri::HTML(@@jenkins_html) 37 return @jenkins_xml 38 end 39 40 end ,然后运行bash --login

答案 9 :(得分:5)

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

答案 10 :(得分:4)

打开终端,然后转到编辑>个人资料首选项,然后转到标签“标题和命令”并选中“将命令作为登录Shell ”。

启动Bash现在你可以直接从终端安装Gems而不使用sudo,错误“ RVM不是一个功能,用'rvm use ...'选择红宝石将不起作用。< / strong>“将被淘汰。

干杯。

答案 11 :(得分:4)

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

  • 更新ZSH。 (试图直接更新,因为某些原因无法正常工作。所以从here卸载并重新安装更新版本)
  • 使用sudo chsh -s $(which zsh) $USER
  • 将默认shell设置为 zsh (即,如果您更喜欢zsh)
  • 安装最新的RVM后,确保以下代码位于.zshrc的底部,可能使用official RVM site中的CURL

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
    
  • 最重要的一点:确保在.zshrc文件中,每个导出到PATH的内容都附加:$PATH。即使遵循上述步骤,我认为这也是我问题的根源。

  • 发布我的 RVM不是一个功能的所有问题都消失了。如果它仍然不起作用,请在此处提供一些错误跟踪。经过几个小时的努力来解决这个问题,我确信我一定看到了所有相关的错误。

希望它有所帮助。干杯!

答案 12 :(得分:3)

在Mac OSX 10.8 Mountain Lion上安装Ruby 1.9.3-p125的步骤

  1. 您已经安装了最新的XCode(&gt; = 4.3)和命令行Objective-C 编译“clang”。
  2. 您必须运行“bash”shell才能使此过程正常工作。
  3. 转到系统偏好设置
  4. 点击“用户和群组”
  5. 点击面板左下角的锁定,输入密码将其解锁。
  6. 在面板左侧窗格中的用户图标上按“Ctrl-Click”,然后选择“高级选项...”
  7. 将登录Shell更改为“/ bin / bash”
  8. 关闭偏好设置
  9. 打开终端窗口(按命令+空格键并输入“terminal”)
  10. 按照以下说明操作:
  11. http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/

    注意:

    • 要安装ruby,您可能需要指定clang编译器:

      $ rvm install 1.9.3p125 --with-gcc = clang

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

      $ ln -s / Users / [您的用户名] /。rvm / usr / local / rvm

答案 13 :(得分:2)

source ~/.bash_profile

...应该做的伎俩...,可能需要注销并再次登录。

How to reload .bash_profile from the command line?

答案 14 :(得分:1)

«官方»说明在那里:https://rvm.io/integration/gnome-terminal/

答案 15 :(得分:0)

对于那些遇到同样问题且他们像我一样使用lubuntu的人,我遵循了这个link

您使用

启动终端
  

lxterminal -e&#34; bash -il&#34;

感谢@mpapsis,他指出了我正确的方向

答案 16 :(得分:0)

我更改红宝石版本的不洁方法是

rvm alias create default ruby-2.2.3 && source ~/.bashrc && rvm list

它起作用是因为我的〜/ .bashrc中有波纹管,但奇怪的是它不能自动完成工作。

[[ -s "/usr/local/rvm/bin/rvm" ]] && source "/usr/local/rvm/bin/rvm"

我试图用--login连接到我的Docker容器

docker run -it imagename `/bin/bash --login`

但是在这种情况下,容器在后台保持打开状态,我无法输入命令。

我尝试了zhc和终端,都选择了“用/bin/bash --login打开”

答案 17 :(得分:0)

我通过将此行添加到.bash_profile:

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

答案 18 :(得分:0)

我有同样的问题,我在我的.bash_profile中做了这个,但它确实有效。 source "$HOME/.rvm/scripts/rvm"

答案 19 :(得分:0)

我遇到了同样的错误,但此页面上没有任何解决方案似乎有效。对我来说,将rvm可执行文件添加到我的路径就足够了:

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

Et瞧!

答案 20 :(得分:0)

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

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

检查旧的rvm配置脚本,然后运行source .profile