我刚刚安装了RVM,似乎 cd 命令多花了几秒钟,为什么会这样?有没有什么办法解决这一问题?
问问题
371 次
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 回答