Convencionalmente, um shell age como um shell de login se ele é chamado com um nome de comando que começa com - . exec -sh funcionaria se você tivesse um executável chamado -sh no caminho. BusyBox ash também suporta a opção -l , então você pode executar sh -l .
Quando você efetua login, o programa login (ou sshd , ou o que estiver manipulando o login) cuida da execução do shell do usuário com um - no nome do comando (o nome do comando não tem que ser o mesmo que o nome do executável, é apenas uma convenção muito comum que login viola de propósito). Aqui, "o que quer que esteja lidando com o login" é o seu mini-script, então você precisa cuidar disso.