Uma solução alternativa e uma abordagem mais agradável, considerando o que você está fazendo neste caso, é evitar o uso de which totalmente, assim:
if (( $+commands[foobar] ))
# configure foobar
fi
Como isso funciona?
De zshexpn(1) :
${+name}
If name is the name of a set parameter '1' is substituted, otherwise '0' is substituted.
$commands é uma matriz associativa gerenciada por zsh (também a hash builtin) que consiste em nomes de comandos como chaves e seu caminho associado como um valor.
Portanto, usar a expansão ${+name} na tabela de hash $commands , indexada pelo comando que você deseja testar para a existência, oferece uma maneira barata e rápida de fazer essa verificação.
Por fim, a construção (( expr )) é uma avaliação aritmética, pois a expansão ${+name} retorna 0 ou 1.