我在ruby和irb中运行%x{rvm use @myapp}
时出错。错误是“RVM不是一个函数,用'rvm use ...'选择rubies将无效。”
这是我尝试过的:
1.“rvm use @myapp”命令在OSX命令提示符下工作(使用OSX Mavericks)
2.确保RVM是最新版本
3.重新加载RVM检查RVM是命令提示符中的一个功能
4.(在irb和ruby的%x{}
)中仍然失败
5.根据一些SO帖子,我将OSX终端首选项从登录shell更改为/bin/bash
和/bin/bash --login
。退出,打开了新的终端窗口但是所有的努力都是徒劳的
6.检查.bash_profile是否为[[-s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
关于如何让%x{rvm use @myapp}
在ruby和irb中工作的任何想法?
答案 0 :(得分:1)
此处发生的情况是,您shell
或ruby
已将irb
rvm
定义为function
并添加到{{1}该函数在shell中优先,并且一切正常,但是当您打开PATH
或ruby
时,它是一个新进程,它只继承包含irb
的环境变量,而不是继承函数,另外从ruby运行PATH
会创建另一个shell进程,它既不是登录shell也不是交互式shell,它们分别会使shell加载%x{}
和~/.bash_profile
。
根据你想做什么,你几乎没有选择,要执行另一个~/.bashrc
/ ruby
,你可以gem
使用rvm ... do ...
这样:
%x{}
OR:
rvm @myapp do ruby -e '...'
OR:
rvm @myapp do gem install ...
它允许单个命令在给定的ruby
的上下文中运行