To not get into an extended discussion in comments I am moving this to an answer.
If your commands work in your regular $SHELL but not in emacs, the following will probably help.
I highly recommend you use the excellent exec-path-from-shell package if you are not using it already. IMHO, this is one of those &...
In spacemacs when in Insert state, Alt-m works as the first space pressed. In your case, I think you could just press Alt-m, then b n to switch to the next buffer.
Stopping sending space to shell might not be a good idea.
Simply using M-x term instead of M-x shell or M-x eshell solved my similar problem. The interface is actually better than eshell or shell. For example, for repeating the previous command just need the up key; Auto-completion works smoothly (but editing multi-lines is not as nice as eshell or shell).
I should also add that, for me the solution mentioned above ...
I don't think it has anything to do with zsh vs sh. I believe it has to do with subprocessess of emacs not having the path required to find the biber executable, whereas interactive shells apparently do.
Try adding the path to exec-path: evaluate the following form
(add-to-list 'exec-path "/usr/bin/vendor_perl")
and try your latexmk run. If that ...