Eu ouvi sobre o depurador bash ( bashdb
) depois de ler um comment então eu pensei que deveria experimentá-lo e ver se ele pode me ajudar a analisar scripts bash ou mais geralmente a execução de comandos. Existem instalações que podem ser aproveitadas independentemente de qualquer programa externo, mas há a questão de conveniência e O bashdb é executado no shell e pode ser chamado diretamente ou com bash --debugger command
quando configurado corretamente.
Então, tentei algo trivial em um script:
#!/usr/bin/env bash
{ echo 'abc'; echo 'def'; } | cat
Que são apenas dois comandos echo
em uma lista inutilmente canalizados para o comando cat
. Usando bashdb scriptname
, obtenho:
(/home/user/bin/scriptname:3):
3: { echo 'abc'; echo 'def'; } | cat
(/home/user/bin/scriptname:3):
3: { echo 'abc'; echo 'def'; } | cat
bashdb<0> bashdb<(0)> step
Portanto, existe um operador de pipe e um subshell é criado - os parênteses em torno do 0 são um tributo a isso. Eu tento step
imediatamente. Uma nova linha é enviada, mas eu não recebo o prompt do depurador ... até que eu pressione enter novamente. A essa altura, perdi a saída do que digito no depurador e o desempenho parece altamente degradado. Fazendo q
e pressionando Enter, eu saio do depurador e agora meu terminal não exibe mais meus comandos também. Os comandos são executados, mas eu preciso sair de uma nova janela de terminal para recuperar qualquer eco de comando. Em alguns casos, tanto na ferramenta quanto depois de sair no bash, não apenas os comandos não são mais ecoados, mas os comandos seguintes da nova linha também se foram.
Então, obviamente, eu tenho muito pouca experiência com esse tipo de software, mas este parece ser o comportamento desejado, já que obtenho resultados similares tanto no Gentoo quanto no Archbang ?? Então, o que aconteceu aqui e em que eu pisei?