O mundo quer que você limpe sua tela.
Como eu disse no link e na discussão da lista de discussão indiretamente referenciada ☺…
Querer não limpar um terminal virtual entre o logoff e o logon subseqüente é muito nadar contra a maré, como Greg Wooledge e outros descobriram. A presença de saída sensível de usuários privilegiados, ou chefes, remanescentes após o logoff tem sido um problema de segurança para Unices (e de fato outros sistemas operacionais de acesso remoto) desde a década de 1970, e é preciso muito esforço para desfazer todos as coisas que as pessoas colocaram para evitar esse problema. Como você observou, eles colocaram vários mecanismos sobrepostos que fazem isso.
- Muitos sistemas têm um comando
clear_console
em seus scripts de logoff de shell como padrão. (Isto é problemático por si só, já que não funciona bem com programas gráficos rodando no terminal virtual do kernel # 1, e não funciona com nenhum outro tipo de terminal, virtual ou real.) Este comando tem para ser removido.
- O padrão em programas getty destinados a terminais virtuais, como
mingetty
, é limpar o terminal. (Ele faz isso antes do logon, o que significa que a saída do terminal pode permanecer sem correção se um serviço de login TTY for interrompido. Ironicamente, essa funcionalidade teria sido melhor posicionada em login
, o que graças às necessidades do PAM ainda está sendo executado no log -off.) A opção --noclear
deve ser implantada para desabilitar isso. Nos sistemas operacionais systemd, isso envolve a gravação de um ou mais arquivos de substituição de arquivo de unidade, a alteração da configuração ExecStart
ou simplesmente a indicação de [email protected]
em um arquivo de unidade local de sua própria criação.
- A unidade de serviços de modelo
[email protected]
fornecida pelo systemd define TTYVTDisallocate=yes
que instrui o systemd a limpar um terminal virtual do kernel. (Isso novamente não funciona com nenhum outro tipo de terminal, nem mesmo com terminais virtuais do espaço do usuário, como parcialmente refletido em seu nome.) Isso também deve ser removido, novamente com um modelo de serviço diferente ou diferente por [email protected]
.
Eles não são totalmente sobrepostos, é claro. mingetty
não é útil para terminais reais conectados via dispositivos seriais; O clear_console
é, estranhamente, parte do pacote shell Bourne Again e não é invocado por pessoas que têm o shell Korn, Z, Almquist, Fish, Watanabe ou outro como o shell de login interativo de sua conta de usuário; e o mecanismo systemd TTYVTDisallocate
não tem aplicabilidade para sistemas operacionais não-systemd.
Como eu disse na discussão da lista de discussão há vários anos, console_clear
é duplamente desnecessário. Desde 2011, o emulador de terminal integrado do Linux tem suportado a sequência de controle ED 3
para limpar o buffer de rolagem, portanto, a troca de terminais virtuais que têm esses efeitos colaterais prejudiciais não é necessária em primeiro lugar. Eu adicionei um comando console-clear
ao conjunto de ferramentas nosh há vários anos, que emite essa seqüência de controle (e é, portanto, utilizável com mais do que apenas o emulador de terminal integrado ao Linux, bem como trabalhando em uma conexão remota). O comando ncurses clear
também hoje em dia sabe emitir as seqüências de controle relevantes, se o terminfo assim o disser.
E é claro que console-terminal-emulator
limpa seu buffer de exibição no desligamento do terminal como padrão.
Leitura adicional