如果我的密码是~/repos/blog/app/views/,我只想blog/app/views在提示中显示,即我只想显示项目根目录。项目根目录是目录的父目录.git。有什么方法可以实现这个目标吗?
如果设置该prompt_subst选项,您可以执行任意代码来显示提示。您不需要.git在每次显示提示时查找目录:实际上,在每次当前目录更改时更新挂钩中的变量chpwd并在提示中使用该变量就足够了。
setopt prompt_subst
chpwd () {
git_root=$PWD
while [[ $git_root != / && ! -e $git_root/.git ]]; do
git_root=$git_root:h
done
if [[ $git_root = / ]]; then
unset git_root
prompt_short_dir=%~
else
prompt_short_dir=${PWD#$git_root/}
fi
}
chpwd
PS1='${prompt_short_dir}%# '
Run Code Online (Sandbox Code Playgroud)