Você executa seu script em uma instância separada do shell, essa é a parte #!/bin/sh
do seu script (isso tem o efeito colateral adicional de executá-lo em traço, não em bash)
Se você executar seu script não com /path/to/script.sh
, mas com . /path/to/script.sh
o hashbang será visto como um comentário e será ignorado, seu script "funcionará".
Então, basicamente, o roteiro é OK, a chamada não é.