Um colega recentemente me apresentou bash -x
para depurar meus scripts bash sem seguir o echo $foo
caminho.
$ bash -x hello-world.sh
+ echo 'Hello World'
Hello World
Internamente - como o bash consegue isso? Eu verifiquei man bash
e (não parecia?) mencionar o -x
sinalizador ao invocar o interpretador. Estou procurando principalmente uma visão geral do que será e não será depurado no -x
ambiente ou qualquer outra pegadinha.
-x
é o mesmo que definirxtrace
com a-o
opção de bash. Da minha cópia da página de manual do bash:Não acho que haja muitos "pegadinhas" com isso: ele imprime cada comando que executa. Suponho que, se você estiver analisando a
stderr
saída do script de shell, isso pode atrapalhar, porque os comandos são impressos emstderr
(também conhecido como descritor de arquivo 2), mas isso parece um caso extremo.(Você também pode habilitá-lo condicionalmente dentro de scripts ou em sessões de shell interativas
set -x
para ativá-lo eset +x
desativá-lo novamente.)