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")"