Repetição misteriosa do comando inserido no shell

2

Após inicializar o sistema e efetuar login (antes de iniciar o X, inicio manualmente via startx) de repente recebo a seguinte saída após inserir um comando:

$ cmd
;user@host: cmd;cmd;cmd;

[output of 'cmd']

$

Depois de iniciar o X e iniciar um terminal, isso é interrompido; depois de terminar o X, isso acontece novamente no TTY simples.

Atualmente estou usando o zsh com 'oh-my-zsh'. Ocorre apenas lá, quando usando o bash ele não ocorre, há apenas um ponto-e-vírgula na frente do nome de usuário.

Alguém sabe o que acontece aqui e como evitá-lo?

    
por akluth 03.09.2013 / 22:40

1 resposta

4

Seu zsh está configurado para definir a barra de título em xterm ou qualquer aplicativo de terminal usado antes de chamar um comando. Ele faz isso imprimindo uma seqüência de escape que é interceptada pelo terminal. Infelizmente, apenas os emuladores de terminal entendem essa sequência, quando você está no console, vê apenas lixo eletrônico.

Para configurar zsh para fazer (ou não) isso, configure o gancho preexec apropriadamente.

Para referência, aqui está um excerto do meu .zshrc :

if [[ $TERM == "xterm" ]]; then
    if [[ -n $SSH_TTY ]]; then
        precmd () { print -Pn "3]0;$HOST: %~
if [[ $TERM == "xterm" ]]; then
    if [[ -n $SSH_TTY ]]; then
        precmd () { print -Pn "3]0;$HOST: %~%pre%7" }
        preexec () { print -n "3]0;$HOST: $1%pre%7" }
    else
        precmd () { print -Pn "3]0;%~%pre%7" }
        preexec () { print -n "3]0;$1%pre%7" }
    fi
fi
7" } preexec () { print -n "3]0;$HOST: $1%pre%7" } else precmd () { print -Pn "3]0;%~%pre%7" } preexec () { print -n "3]0;$1%pre%7" } fi fi

O if externo garante que apenas configuramos os ganchos precmd e preexec se estivermos dentro do X.

    
por 04.09.2013 / 00:29

Tags