Command::env_clear but path still set?

Here's the playground:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a0c460c9532226bb4d5cedaed3418294

Any ideas why the grep executable is being found despite having no env vars set (as env_clear is set)?

Even if I run sh and get it to call set there's env vars....

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=67b4924ccb3d181c46db79f5fbd37e6d

Is there some special casing of 0 env vars set that defaults to just using the parent's set of envs somewhere?

I've tried OSX and Linux OSes and the same thing happens... am puzzled.

I'm not sure why the existence of a binary should depend on the environment variables.

However, this indeed is surprising. Yet, if you call env instead of sh -c set, you will get an empty output. This suggests to me that it's the shell that still somehow defines or bakes in defaults for some environment variables.