I learned heavy way about 1991, don't use system *sh paths or do any rename or ...
In one unix sh was special sh and there was also sh5. I copied sh5 to sh and after that "no boot ...".
After that I have done every system where I execute any scripts:
cp somecorrect_sh /usr/local/bin/mysh
And after that I have used mysh in my script
#!/usr/local/bin/mysh
It's so different to use ksh89, ksh93, posix-sh, original Bourne Shell, bash, ... so often /bin/sh is some of those. It depent which *nix and which release you are using. /bin/sh is some sh ...
Example, if you like to use always ksh93, then download it
software download selections
Same situation/method with bash + awk. Today I know which version I'm using. I have done own copies.
If you like to test, try substr
a="123"
print ${a:1:1}
# result must be 2, if you have posix-sh/ksh93 compatible shell
# if result is something else, then you have old sh: ksh89, old posix-sh or bourne shell
# if you have bash, print give error, bash can use echo and printf, but not print,
# maybe bash 4 include print, I have not tested