Você pode ser feliz o suficiente apenas agrupar as "palavras", e então passá-las através do comando '' which ''. Talvez como o seguinte:
cat $SCRIPT | tr -c '[[:alnum:]-_]' '\n' | sort -u | xargs which
O agrupamento de palavras na frase tr
exclui os comandos mais "esotéricos" como [
e outros. É aí que você pode precisar experimentar, a menos que esteja apenas procurando por palavras de comando "comuns". O acima, é claro, também encontra palavras de comando que talvez não sejam usadas como tal no script, e para fazer essa distinção você realmente precisará de mais de um analisador. E você também pode desejar que um sed 's/#.*//
inicial, em vez de cat
, exclua os comentários no script (embora isso não passe onde #
está incluído nas sequências).