shell脚本中的cd命令加载目标目录中的rvmrc吗?

时间:2011-06-30 04:33:24

标签: ruby shell rvm cd

当你有类似的东西时。

在projectx中给出一个.rvmrc文件,指定ruby 1.9.2并在我的系统上有两个红宝石(ree-1.8.7和ruby1.9.2)

#!/bin/bash

cd applications/projectx
which ruby
ruby -v

最后两行输出ree-1.8.7及其我不打算使用的路径。

3 个答案:

答案 0 :(得分:8)


Rvm确实定义了cd的包装器,如下所示:

cd () 
{ 
    builtin cd "$@";
    local result=$?;
    __rvm_project_rvmrc;
    __rvm_after_cd;
    return $result
}

很难说出为什么.rvmrc无效。 Rvm 支持项目特定的.rvmrc文件,但您没有发布自己的文件。

答案 1 :(得分:3)

您需要在脚本中获取rvm,当您运行脚本时,它不会加载您的.bashrc。只需添加一行

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

到脚本的开头。

答案 2 :(得分:1)

如果您使用的是RVM 1.7.0或更高版本,则需要通过将此行添加到〜/ .rvmrc(或系统.rvmrc)来启用项目特定的.rvmrc文件:

rvm_project_rvmrc = 1

请参阅:https://rvm.io/workflow/rvmrc/