我刚刚安装了RVM,看来cd命令需要额外的几秒钟,为什么会发生这种情况?有没有什么办法解决这一问题?
答案 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.
如果您愿意取消这种便利,可以注释掉这个文件并完成慢速目录切换。
或者你可以贡献一个执行一些缓存的补丁,所以这很快。