Hi, I think the execute_cmd.c change here (https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=1fff64acdc5709cdc213f0143f1b8169fdf68a39) made things worse, not better. I don’t know what the original report that prompted this change was though, but my impression is that the error became much less detailed.
The problem with `ENOENT` error from `execve` is that it is ambiguous: it will be returned in the case when the executable does not exist _or_ when the requested interpreter does not exist. So, in the `else` branch there is this chunk of logic that disambiguates them and reports either “no such file” or “bad interpreter”. With this change, `ENOENT` now has its own branch and hence that disambiguation logic is never reached. (I might be wrong, I don’t have bash 5.2 available to test, this is purely based on my reading of the code.) Cheers, Kirill