- # shells, and in the "zshrc" stage for non-login shells.
- if [[ ( -o login && "$type" == "zprofile" ) || ( ! -o login && "$type" == "zshrc" ) ]]; then
+ # shells, and in the "zshrc" stage for non-login sub-shells (which have
+ # the profile already read in and therefore will skip the "ax-io" and
+ # "zprofile" stages and not catch up).
+ if [[ \
+ ( "$type" == "zprofile" ) || \
+ ( ! -o login && "$type" == "zshrc" && -n "$AXZSH_ZPROFILE_READ" ) \
+ ]]; then