管理zsh插件的zsh_unplugged有这样一段代码:
function plugin-update {
ZPLUGINDIR=${ZPLUGINDIR:-$HOME/.config/zsh/plugins}
for d in $ZPLUGINDIR/*/.git(/); do
echo "Updating ${d:h:t}..."
command git -C "${d:h}" pull --ff --recurse-submodules --depth 1 --rebase --autostash
done
}
这里的${d:h:t}
是什么用法?我查询到这属于Substring Expansion,根据bash的man page,它使用的形式是${parameter:offset:length}
,但在这里h
与t
似乎都没有被定义过啊?这是否是内置的变量?
类似的还有source ${0:A:h}/zsh_unplugged.plugin.zsh
的用法,这里的$0
比较常用,A
和h
是怎么凭空出现的呢?