This mostly comprises of:
* changing the directories in subshell and not ignoring `cd` return code
* handling every error gracefully instead of ignoring the return code
(cherry picked from commit 57b6aeabd5)
This mostly comprises of:
* changing the directories in subshell and not ignoring `cd` return code
* handling every error gracefully instead of ignoring the return code
(cherry picked from commit 57b6aeabd5)