"RVM不是函数"错误

Jwo*_*sty 29 ruby 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 ...'选择红宝石将不起作用." 我怎样才能解决这个问题?

我的目标是让它达到我不必每次会话都输入源命令的程度,并且由于某种原因~/.profile不能执行.

Dan*_*man 42

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

要实际修复此问题,您有两种选择:

  1. 配置终端仿真器以启动登录shell,而不是非登录shell,以便.profile加载.
  2. 修改.bashrc为源RVM,也适用于非登录shell.

要做第二个,你可以添加到~/.bashrc:

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

  • 请不要在〜/ .bashrc中做广告来源RVM,这不是正确的解决方案,第1点是最好的方法,这里的一些细节:https://rvm.beginrescueend.com/support/faq/#shell_login (4认同)

Alb*_*tes 8

如果你使用zsh作为shell而不是bash,你必须:

1.

vi ~/.zshrc 
Run Code Online (Sandbox Code Playgroud)

像马特说的那样,补充一下:

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

3.重启Terminall 4.完成!

rvm use 1.9.3
Run Code Online (Sandbox Code Playgroud)

威尔工作

  • 像zsh shell的魅力一样! (2认同)

Jwo*_*sty 7

我不明白什么~/.profile是正确的; 我需要改变~/.bash_profile.问题解决了!