Set xterm title não funciona sobre o ssh

1

Segui as postagens unix se e adicionei a linha

trap 'echo -ne "3]0;$BASH_COMMAND
Last login: Sun Jun  7 21:28:29 2015 from sk-box
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# cd
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# pwd
/root
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# 
7"' DEBUG

ao meu arquivo .bashrc para definir meu último comando como o título do terminal. Funciona bem na minha máquina de desktop ubuntu.

Quando eu adiciono esta linha ao arquivo .bashrc do meu servidor Cento e ssh na máquina Centos, ela não funciona mais. O título do terminal do cliente SSH ficou em branco e imprime todas as coisas de lixo eletrônico no meu console após cada comando,

trap 'echo -ne "3]0;$BASH_COMMAND
Last login: Sun Jun  7 21:28:29 2015 from sk-box
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# cd
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# pwd
/root
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# 
7"' DEBUG

É possível garantir que o título dinâmico funcione bem em ssh?

    
por Madhavan 07.06.2015 / 18:07

1 resposta

1
PROMPT_COMMAND='printf "3]0;%s@%s:%s%bl0ck_qu0te%7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
trap 'echo -ne "3]0;$BASH_COMMAND%bl0ck_qu0te%7"' DEBUG

Esses dois comandos interferem um no outro. BASH_COMMAND acaba contendo o PROMPT_COMMAND , não o comando executado anteriormente. Como PROMPT_COMMAND contém PROMPT_COMMAND7 (um caractere de campainha após expansão de barra invertida), que é o marcador final do texto do título, o resultado é bastante confuso - você vê a sequência depois de BASH_COMMAND7 antes do prompt e campainha toca quando o segundo %code% é impresso. Você também está executando um nível extra de expansão de barra invertida em %code% .

Substitua seu trap DEBUG por um mais robusto que cuide de não imprimir caracteres especiais:

trap 'printf "3]0;%s
trap 'printf "3]0;%s%pre%7" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG
7" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG
    
por 08.06.2015 / 03:13

Tags