shell脚本中的do cd命令将rvmrc加载到目标目录中



当您有类似。。

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

#!/bin/bash
cd applications/projectx
which ruby
ruby -v

最后两行输出ree-1.8.7及其路径,这不是我想要使用的。


Rvm确实在cd周围定义了一个包装器,看起来像这样:

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

很难说出为什么你的.rvmrc不起作用。Rvm确实支持特定于项目的.rvmrc文件,但您没有发布您的文件。

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

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

到脚本的开头。

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

rvm_project_rvmrc=1

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

最新更新