To be fair, many shells have command caching, so they effectively roll their own exec syscall wrapper:
$ python3 -c 'print("hi")' hi $ hash hits command 1 /usr/bin/python3