1

我刚刚安装了RVM,似乎 cd 命令多花了几秒钟,为什么会这样?有没有什么办法解决这一问题?

4

2 回答 2

4

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

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

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

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

干杯,-丹尼斯

于 2010-07-17T18:44:27.287 回答
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 文件,并设置环境。这样你就可以让 dir A 在 ruby​​ 1.8 下运行,而 dir B 在 ruby​​ 1.9 下运行。

如果您乐于取消这种便利,您可以注释掉这个文件并通过缓慢的目录切换来完成。

或者,您可以提供一个执行一些缓存的补丁,这样速度很快。

于 2009-12-31T00:01:14.383 回答