Como 'set -x' para scripts que não sejam os meus

1

Ainda estou lidando com um bug da outra pergunta que ficou sem resposta porque não consigo depurar as informações.

Eu tenho scripts executando outros scripts e preciso ver como o tty está sendo desconectado do terminal.

Existe alguma maneira de "definir -x" globalmente? Eu não posso configurá-lo no script do problema porque ele é gerado dinamicamente, não por mim, mas eu gostaria de ver o que há de errado com ele.

    
por Brydon Gibson 13.06.2016 / 15:10

1 resposta

3

Invoque o Bash com um conjunto de opções de shell

De acordo com a seção Invocação de Bash do Bash manual,

All of the single-character options used with the set builtin (see The Set Builtin) can be used as options when the shell is invoked

Isso significa que você pode executar um script de Bash com a opção xtrace configurando a opção bash com o -x e o nome do arquivo como argumento, por exemplo,

bash -x /path/to/script

Configurar opção de shell para todos os scripts de shell

Quando você diz "global", presumo que queira definir a opção xtrace para todas as invocações não interativas do Bash. Para fazer isso, defina a variável de ambiente BASH_ENV como um nome de arquivo adequado e, em seguida, crie esse arquivo com set -x como seu conteúdo:

export BASH_ENV=~/.bash_env
echo set -x > ~/.bash_env

Da página do manual:

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute.

    
por 13.06.2016 / 15:35

Tags