O conteúdo da sessão já foi substituído, quando você iniciou os programas da TUI em primeiro lugar. Você pode ver que esse é o caso.
Quando um programa TUI, que usa ncurses
e semelhantes para apresentar sua interface de usuário textual, é iniciado, ele limpa a tela. Nesse momento, tudo o que está na tela foi sobrescrito.
O que você está perdendo, e o que você não sabe o nome, é a idéia de terminais que têm um buffer de tela alternativo . Quando um programa TUI como esse é iniciado, ele emite a sequência de escape para alternar para o buffer de tela alternativo do terminal, se houver um. Toda a sua saída vai para esse buffer. Quando o programa sai ou se suspende, ele emite a seqüência de escape para restaurar o buffer de tela principal, que permaneceu inalterado enquanto o programa TUI exibia sua interface de usuário no buffer alternativo.
Para terminais que não têm buffers de tela alternativos, não há sequência de escape a ser emitida e a interface de usuário em tela cheia sobrescreve o que estava anteriormente no terminal.
Os programas procuram essas sequências de escape nos bancos de dados terminfo
ou termcap
. No terminfo
world, os recursos do terminal são denominados smcup
e rmcup
. No mundo termcap
, eles são denominados ti
e te
. Conforme documentado, eles não mencionam os buffers de tela.
Em vez disso, eles falam de entrar e sair do "modo de endereçamento do cursor". A ideia é que um programa TUI que apresente uma interface de tela cheia como essa esteja operando no modo de endereçamento do cursor onde o programa realmente não precisa do terminal para rolar; Considerando que um programa TUI que apenas exibe linhas de texto de rolagem não é. Então, um entra e sai desse modo. (No mundo real, as coisas não são tão claras. Por exemplo: os shells modernos como o Z Shell movem o cursor para edição de linha, conclusão de menu e $RPROMPT
; mas não alternam para o buffer alternativo de tela, não tem uma interface de usuário de tela inteira completa e opera em termos de rolagem.)
Portanto, os recursos geralmente fazem mais do que apenas alternar buffers. smcup
também contém a seqüência de escape para salvar a posição atual do cursor, e rmcup
a seqüência de escape para restaurá-la, assim como, se o terminal tiver essas seqüências de escape.
Seu problema é uma das duas coisas:
- O banco de dados
termcap
em seu sistema FreeBSD não possuite
eti
entradas para seu tipo de terminal específico, porque a entrada está incompleta. - Você não está usando o tipo de terminal correto para seu emulador de terminal, em primeiro lugar.
O tipo de terminal é retirado da sua variável de ambiente TERM
, no servidor final . Seu valor denota uma entrada no banco de dados termcap
. Portanto, certifique-se de que sua variável de ambiente TERM
nomeie uma entrada em /etc/termcap
com os recursos correspondentes aos do emulador de terminal (local). Se não houver uma entrada correspondente ao emulador de terminal que contenha ti
e te
, você deverá simplesmente adicionar essa entrada.