Nem todos os shells suportam o histórico. dash
tem suporte de histórico limitado por meio do comando fc
se compilado com o suporte a libedit, mas não o suporta de outra forma. dash
não é capaz de salvar um arquivo de histórico.
Geralmente, se um shell não suporta a tecla de seta para cima, você pode assumir que ele não salvará um arquivo histórico. Esta não é uma regra dura e rápida, mas é verdade em todos os casos que me deparei.
Alguns outros shells ( bash
notavelmente, mas outros também) usam readline, que geralmente salva o histórico em seu diretório home como um arquivo ~/.*_history
, com *
sendo substituído pelo nome do programa. O Python 3 usa readline por exemplo e armazena seu histórico em ~/.python_history
.
Dependendo do shell, o local de salvamento pode ou não ser configurável. bash
e zsh
usam a variável HISTFILE
(all caps). Se o seu shell está configurado corretamente, este não deve ser uma variável de ambiente, portanto, se você o vir em env
, cometeu um erro (mas ainda deve aparecer na saída de set
ou printf %s\n "$HISTFILE"
).
Se um programa não oferecer suporte ao histórico (por exemplo, ed
, scripts de shell usando read
ou versões anteriores de mysql
), há um aplicativo de plataforma cruzada chamado rlwrap
que usará o readline para dar a conclusão de tabulação tipo bash, manipulação de chave de seta e histórico.