El which
imprime la aplicación más precedente en el PATH mientras que where
imprime todas las aplicaciones coincidentes en la ruta.
La diferencia se manifiesta cuando se tienen instancias de una aplicación instaladas una al lado de la otra y todas ellas en la misma ruta. Estrictamente hablando que por sí mismo devuelve la instancia resuelta primero en el camino de izquierda a derecha, donde devuelve TODAS las instancias encontradas en la ruta resuelta de izquierda a derecha. Si quieres ver de qué estoy hablando, en un sistema Windows 7 o superior escribe:
where notepad
puede ver dos caminos devueltos
C:\>where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
La equivalencia real es
which -a someApp
=== where someApp