Este é um pouco de artefato histórico. No alvorecer do Unix time_t
, os computadores eram as grandes caixas no datacenter e os terminais eram peças separadas de hardware que eram usadas para se comunicar com eles. Um terminal não vinha necessariamente do mesmo fabricante que o computador, e cada fabricante e modelo de terminal tinha seu próprio conjunto de recursos extras e peculiaridades que precisavam ser levados em conta.
curses
e seu sucessor posterior ncurses
são bibliotecas que ocultam todas as especificações dos terminais dependentes do modelo e fornecem maneiras padrão de realizar operações de controle de terminal, como "limpar a tela" ou "redefinir a terminal para configurações padrão sane ". Essas bibliotecas usam a variável de ambiente TERM
para decidir qual conjunto de seqüências de controle deve ser usado.
Comandos como clear
e reset
usam essas bibliotecas para traduzir a operação solicitada pelo usuário em seqüências de controle específicas do modelo de terminal e enviá-las para o terminal. Essas sequências de controle específicas do modelo são armazenadas em termcap
ou terminfo
arquivos - termcap
é o estilo antigo e terminfo
é o que é usado por ncurses
.
Hoje, é muito comum que o "terminal" seja, na verdade, um emulador de terminal que é executado no mesmo hardware físico do computador real. Mas ainda é controlado como se fosse uma peça separada de hardware.
Isso deixa o programador do emulador de terminal com um certo grau de liberdade para escolher como os recursos específicos devem ser implementados. Por exemplo, o programador pode fazer com que a reinicialização do terminal limpe o buffer de deslocamento de rolagem - ou ele pode escolher o contrário, se ele / ela acha que o buffer de rolagem "pertence" ao usuário e nenhum aplicativo deve tem o poder de limpá-lo.
Como alternativa, o programador do emulador de terminal pode ter fornecido diferentes seqüências de controle para redefinir o terminal, seja com ou sem limpar o buffer de rolagem. Nesse caso, a pessoa que empacota as bibliotecas de controle de terminal para uma distribuição de SO terá a opção a fazer: o comando reset
deve limpar o pergaminho por padrão ou não? Dependendo da escolha, ele / ela pode armazenar uma seqüência de controle diferente no local apropriado nos arquivos de dados usados pelas bibliotecas de controle do terminal.
Sempre foi possível ao administrador do sistema adicionar novos conjuntos de sequências de controle de terminal aos arquivos termcap
ou terminfo
ou modificar os existentes. Talvez algum site tivesse um modelo de terminal que não fosse amplamente conhecido, ou talvez uma definição padrão exigisse apenas alguns ajustes para corresponder a um caso de uso específico. Se a sequência de controle padrão usada pelo comando reset
na verdade for "reinicializar o terminal sem limpar a rolagem", você poderá substituí-lo por um código "reset terminal and scrollback" nos arquivos.