Não há solução genérica, pois há inúmeras maneiras de um script estar usando para chamar outros scripts. Você pode fazer um grep
que pode funcionar para seus scripts, mas não em geral.
Quais scripts isso chama?
$(find / -executable -name "*.sh" -print0 | shuf -z -n 1)
Se você conseguir executar esses scripts, poderá rastreá-los de duas maneiras.
set -x
fará com que o seu script imprima cada comando que ele executa na forma expandida. Você pode então verificar esses comandos para aqueles que executam scripts.
strace -ff
Overkill, mas strace
fornece tudo o que um processo faz e, com a opção -ff
, ele também segue o buraco do coelho até o final. Eu digo quase porque existem maneiras de contornar isso. Acompanha daemons?
Grep o strace
para chamadas para open()
ou exec*()
e filtrar para arquivos que são scripts e você pode estar em algum lugar perto de uma imagem completa [para essa execução do script que você criou - sem contar os scripts são chamados apenas sob outras condições].
$ strace -ff ./testscript.sh |& grep 'open.*\.sh"'
open("./testscript.sh", O_RDONLY) = 3
[pid 24486] open("./CD-DVD Image erstellen.sh", O_RDONLY) = 3
Assim, você pode ser criativo com suas soluções, mas não espere uma que se adapte a todas as situações.