Se eu entendi corretamente, você deseja extrair o shell da primeira linha do script.
Quando você usa $SHELL , está mostrando o shell que está realmente usando, que não precisa ser o mesmo que o especificado na primeira linha: por exemplo, você pode usar o comando . / source para execute qualquer script em qualquer shell que esteja sendo executado no momento.
O seguinte mostrará o shell da primeira linha:
sed -n '1 s/^#!//p' "$0"
Aqui $0 é o script em execução, e o comando sed imprime a primeira linha com o primeiro #! removido. Se não houver essa linha, nada será devolvido e você poderá verificar isso.
Você pode usar $(...) para obter o valor do comando sed , por exemplo: -
echo Script "$0" is running with "$SHELL"
echo It should run with "$(sed -n '1 s/^#!//p' "$0")"