Taky mě to překvapilo. Pak jsem kouknul na patch a on jenom optimalizuje pořadí operací - místo kopírování argumentů and environment a poté exec filename lookup provede nejdřív filename lookup a pokud selže, tak rovnou vrátí chybu a ostatní drahé operace přeskočí.
Takže klasický exec zůstává pořád implementovaný v libc a zkouší postupně všechny cesty. Chytřejší shelly si "úspěšnou" path cachují.