为什么安装RVM后需要很长时间才能更改目录

时间:2009-12-30 23:57:02

标签: ruby rvm

我刚刚安装了RVM,看来cd命令需要额外的几秒钟,为什么会发生这种情况?有没有什么办法解决这一问题?

2 个答案:

答案 0 :(得分:4)

这已在0.1.39及更高版本的RVM中得到解决。现在,只有在第一次输入项目目录树时,该行为才会获取.rvmrc文件。该目录树中的后续cd不会获取.rvmrc文件。如果您发现自己经常跳进和跳出项目目录树,我建议使用多个终端:)

这样做的另一个好处是,你现在可以放置更多耗时的操作,例如确保你的gemset中的所有宝石都是最新的,在.rvmrc中,以保证你的项目最新,而不会花费你每次cd的时间。

要获取最新版本的rvm,请运行: rvm update --head

安装完成后,所有新shell都将具有改进的行为 - 对于您不想关闭的现有shell,您可以运行'rvm reload'来提供新行为。

干杯, 丹尼斯

答案 1 :(得分:2)

发生这种情况是因为它派生的文件拦截了cd操作。

prompt:$ cat ~/.rvm/scripts/cd
#!/usr/bin/env bash

# Source a .rvmrc file in a directory after changing to it, if it exists.
 cd() {
   builtin cd "$@"
   if [[ "$rvm_project_rvmrc" != 0 ]] ; then
     local cwd ; cwd=$(pwd)
     while : ; do
       if [[ -z "$cwd" ]] || [[ "$HOME" = "$cwd" ]] || [[ "/" = "$cwd" ]] ; then
         if [[ "$rvm_project_rvmrc_default" != 0 ]] ; then
           rvm default 1>/dev/null 2>&1
         fi
         break
       else
         if [[ -f "$cwd/.rvmrc" ]] ; then
           source "$cwd/.rvmrc"
           break
         else
           cwd=$(dirname "$cwd")
         fi
       fi
     done
   fi
 }

此文件检查您要更改的目录中的.rvmrc文件,并设置环境。这样你就可以在ruby 1.8下运行dir A,在ruby 1.9下运行dir B.

如果您愿意取消这种便利,可以注释掉这个文件并完成慢速目录切换。

或者你可以贡献一个执行一些缓存的补丁,所以这很快。