Not necessarily, imagine for example an embedded OS with only dash or busybox based on Debian.
Also, even with bash installed, bash doesn't always behave like sh does.
A common example is echo:
With /bin/sh on an OpenBSD:
>>>
kakwa@openbsd ~ sh -c 'echo "print\n"'
print
<new line>
>>>
With /bin/dash (aka /bin/sh on Debian)
>>>
kakwa@debian dash -c 'echo "print\n"'
print
<new line>
>>>
This is consistent so far.
But, now, with /bin/bash
>>>
kakwa@debian ~ » bash -c 'echo "print\n"'
print\n
>>>
That's why I tend to use printf more than echo in my shell scripts.
Also, I'm not a big fan of what RHEL/CentOS/Fedora does symlinking /bin/sh and /bin/bash.
It blurs the line between bash and sh, which results a lot of scripts with a /bin/sh shebang containing bashism.
Also, even with bash installed, bash doesn't always behave like sh does.
A common example is echo:
With /bin/sh on an OpenBSD:
>>>
kakwa@openbsd ~ sh -c 'echo "print\n"'
print
<new line>
>>>
With /bin/dash (aka /bin/sh on Debian)
>>>
kakwa@debian dash -c 'echo "print\n"'
print
<new line>
>>>
This is consistent so far.
But, now, with /bin/bash
>>>
kakwa@debian ~ » bash -c 'echo "print\n"'
print\n
>>>
That's why I tend to use printf more than echo in my shell scripts.
Also, I'm not a big fan of what RHEL/CentOS/Fedora does symlinking /bin/sh and /bin/bash. It blurs the line between bash and sh, which results a lot of scripts with a /bin/sh shebang containing bashism.