我的 .zshrc 中有以下代码:
local ruby_version=''
if which rvm-prompt &> /dev/null; then
ruby_version="$(rvm-prompt i v g)"
else
if which rbenv &> /dev/null; then
ruby_version="$(rbenv version | sed -e "s/ (set.*$//")"
fi
fi
我的 RPS1 提示符中有此代码:
RPS1='${PR_GREEN}$(virtualenv_info)%{$reset_color%} ${PR_RED}${ruby_version}%{$reset_color%}'
(为简洁起见,我没有显示设置 PR_ 颜色或确定虚拟环境的代码 - 这两者都有效。)
当创建一个新的 shell(iTerm2 中的新窗口或新选项卡)时,Ruby 信息是正确的。但是,如果我切换到使用不同 Ruby 的项目(由.ruby-version
文件确定),则右侧提示中显示的 Ruby 信息不会刷新。如果我重新获取我的.zshrc
文件,则正确提示会刷新。
我是否需要将确定 Ruby 版本的代码包含在函数中?顺便说一句,我setopt promptsubst
的 .zshrc 中也有。
当我更改目录时,我错过了什么阻止正确提示刷新?