set verbose imprime linhas extras não relacionadas

5

Usar set -x faz com que meu shell imprima coisas não relacionadas. Por exemplo:

$ set -x
++ printf $'%157s\r'
$ echo 'hello'
+ echo hello
hello
++ printf $'%157s\r'

As linhas que começam com '++' são extras. Como posso remover essas linhas extras?

    
por Mert Nuhoglu 30.06.2014 / 11:36

2 respostas

4

A -x bandeira não é estritamente "detalhada" , é:

The shell shall write to standard error a trace for each command after it expands the command and before it executes it.

++ significa que esta linha de rastreio está vindo do próprio processamento interno do shell enquanto ele pensa em seu prompt. É provavelmente algo que acontece no seu PROMPT_COMMAND : nesse caso, se você executar:

PROMPT_COMMAND=
set -x

então você não deve ter mais saídas extras.

É possível que você tenha outra configuração que esteja causando isso também - o Bash tem muita configuração de prompt - e, nesse caso, bash -norc deve evitar isso completamente.

Dito isso, esse é essencialmente o comportamento pretendido: -x é realmente destinado à depuração de scripts de shell, em vez de usar em um shell interativo. Ele realmente serve para imprimir todos os comandos que ele executa, e é isso que está fazendo aqui - há um comando extra que é executado a cada prompt impresso.

    
por 30.06.2014 / 11:56
1

A saída extra também pode ser produzida por funções chamadas de sua variável $PS1 . Tente configurá-lo para um prompt mínimo: export PS1='\u@h:\w \$ '

    
por 30.06.2014 / 14:58

Tags