Essa é uma questão que pode ser interessante.
Os resultados são diferentes porque são coisas diferentes, isto é, não se trata do mesmo interpretador num caso e noutro.
Usar
dot slash não é necessariamente a mesma coisa que usar
shdot slash é bash; sh é dash, são, pois, interpretadores de comandos diferentes.
Bash é GNU Bourne-Again Shell
Dash é Debian Almquist Shell
Por primeiro precisamos melhor entender o que seja o ./ (ponto barra), comumente conhecido como dot slash.
O dot slash é essencialmente a execução *local* de um determinado comando, isto é, se está passando ao sistema operacional a informação de que o arquivo a ser executado está exatamente aqui onde foi chamado e não em algum outro ponto da PATH e isso se deve sobremodo a atender razões de segurança de executáveis.
Para não ter que escrever tudo de novo, numa longa dissertação, remeto ao trabalho desse link onde a questão está sobejamente explicada pelo companheiro Elias Praciano.
Por que precisamos usar ./ antes do nome de um script para executá-lo no Linux?https://elias.praciano.com/2016/01/por-que-precisamos-usar-antes-do-nome-de-um-script-para-executa-lo-no-linux/Ainda, faça a verificação da shell padrão do sistema fazendo:
echo $SHELL
que certamente, no Ubuntu, irá resultar em:
/bin/bash
Estabelecido que dot slash é bash e tendo isso em conta, vamos voltar à questão central que é se tratar de interpretadores de comando diferentes.
É ver que sh é na verdade um link simbólico que remete ao dash, confira fazendo:
ls /bin/sh
Depois faça:
file /bin/sh
que irá resultar:
/bin/sh: symbolic link to dash
Bem, o fato está aí, a explicação do fato, que é uma questão histórica, vem depois, quando o relóginho do tempo aqui permitir escrever um pouco mais.