bash não está lendo $ TERMINFO no login (por SSH)

3

Eu tenho um OpenVZ Fedora 20 VPS que quando eu SSH, meu arquivo termcap armazenado em $XDG_DATA_HOME/terminfo/x/xterm-termite , não está sendo lido, apesar de ter TERMINFO=$XDG_DATA_HOME/terminfo set. Se eu executar uma subshell bash, tudo funciona bem. Ou se eu adicionar exec bash ao final do meu .profile , tudo funcionará bem.

Eu vi esta pergunta e suspeitei que poderia ser a mesma coisa. Mas eu estou logando com o /usr/bin versão bash já mesmo assim

$ echo $BASH
/usr/bin/bash
$ which bash
/usr/bin/bash

Eu também tentei o Ubuntu 13.10 no VPS e vi o mesmo problema.

A pergunta de Patrick me fez pensar, porém, eu sei que o sistema operacional subjacente do VPS é REHL. Isso poderia de algum modo afetá-lo?

I fonte de um arquivo chamado environment na minha .profile , que define a variável de ambiente $TERMINFO se o diretório terminfo existir em XDG_DATA_HOME .

$ echo $TERMINFO
/home/evan/.local/share/terminfo
$ echo $XDG_DATA_HOME
/home/evan/.local/share
$ find $TERMINFO
/home/evan/.local/share/terminfo
/home/evan/.local/share/terminfo/x
/home/evan/.local/share/terminfo/x/xterm-termite
$ echo $TERM
xterm-termite

Isso funciona bem no meu Linode VPS.

    
por Evan Purkhiser 18.05.2014 / 14:39

1 resposta

2

O Bash carrega a entrada do banco de dados terminfo somente quando é iniciado (como a maioria dos programas) ou quando você altera a variável TERM . Alterar a variável TERMINFO não tem efeito imediato: ela é usada apenas quando a entrada terminfo é carregada, não aciona um recarregamento.

Quando você executa exec bash , isso inicia uma nova instância do bash que carrega a entrada do terminal com base nos valores atuais de TERM e TERMINFO .

Você pode recarregar o banco de dados terminfo atribuindo a TERM . Bash otimiza TERM=$TERM , não recarrega os dados, então você precisa passar por um valor intermediário.

TERMINFO=…
# Reload the terminfo entry to take the new value of $TERMINFO into account
old_TERM=$TERM; TERM=dumb; TERM=$old_TERM; unset old_TERM
    
por 19.05.2014 / 01:23