$SHELL
não informa qual shell você está executando, ele informa qual é a variável de ambiente SHELL
. Bash define isso para o caminho para o seu shell de login, se ainda não estiver definido.
Você está executando sh
( dash
, para você) sob sudo, o que é possível ver diretamente usando pstree
:
$ cat test.sh
pstree $$
$ ./test.sh
bash───pstree
$ sudo ./test.sh
sh───pstree
O uso de sh
está de acordo com o POSIX, embora essa parte da especificação não esteja vinculada às opções de implementação do sudo.
readlink /proc/$$/exe
também confirmará que é dash
especificamente. Você também pode usar qualquer uma das outras maneiras de identificar o shell em execução a partir da pergunta que você vinculou.
No traço, $'abc'
é um sinal de dólar solitário sem significado seguido por uma sequência de aspas simples - basicamente da mesma maneira que foo=$
manteria o sinal em qualquer shell.