Where can I run a .sh script on Android without root?
/storage/emulated/0 is usually mounted in a way that prevents execution of programs from this location. 

Therefore even with a set executable bit for your script you won't be able to execute it directly. Of course you can still execute it via sh:

/system/bin/sh /storage/emulated/0/test.sh


Alternatively there is the directory /data/local/tmp which is writable without root (e.g. via adb). There you can place a script and execute it directly.

Note: Listing the content of /data and /data/local is denied for non-root users, but in /data/local/tmp you have permissions again.