为什么 zsh 允许在没有 space 的情况下使用 git 中的别名组合?

Why does zsh allow to use combination of aliases in git without space?

我为 bash 和 zsh 定义了以下别名:

alias g=git

此外,在 git 我配置了 git 别名 alias.st status,这样我就可以用

获得git状态

g st.

现在我意识到在 zsh 中,gst(没有 space)也可以工作。 how/why 有什么想法吗? 在 bash 中,相同的命令导致 Command 'gst' not found.

我已经很长时间没有使用 vanilla zsh 了,个人认为 zsh 本身并不知道 gst 命令,除非您手动指定它。如果您使用的是流行的框架 oh-my-zsh,它有一个 git 插件,它定义了大约 130 个额外的 git 别名,其中一些包含 gst.

cat $HOME/.oh-my-zsh/plugins/git/git.plugin.zsh | grep "gst"
alias gst='git status'
alias gsta='git stash save'
alias gstaa='git stash apply'
alias gstc='git stash clear'
alias gstd='git stash drop'
alias gstl='git stash list'
alias gstp='git stash pop'
alias gsts='git stash show --text'

如果您从 .zshrc 启用了此插件,那么默认情况下您也可以访问此别名(以及其他 129 个)。