我刚刚安装了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。
答案 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网站,在基础部分,他们有这个命令:
source $(rvm 1.9.3 do rvm env --path)
您应该为您真正想要的ruby版本更改1.9.3,并且无论shell类型如何,它都会使rvm成为函数。
答案 7 :(得分:7)
也许你可以试试下面的内容:
答案 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)
以上所有答案均有效。但是当我遇到同样的问题时,解决方案如下:
sudo chsh -s $(which zsh) $USER
安装最新的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的步骤
注意:
要安装ruby,您可能需要指定clang编译器:
$ rvm install 1.9.3p125 --with-gcc = clang
如果找不到RVM抱怨/ usr / local / rvm,则需要创建一个链接:
$ ln -s / Users / [您的用户名] /。rvm / usr / local / rvm
答案 13 :(得分:2)
答案 14 :(得分:1)
答案 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