Ative o histórico de liberação em ksh após cada comando (ou pare de atualizá-lo)

Ative o histórico de liberação em ksh após cada comando (ou pare de atualizá-lo)

Eu li que o ksh, ao contrário do bash, libera seu histórico após cada comando. Isso pode ser bom para muitos, mas para mim me deixa louco!

Tenho várias janelas abertas que são abertas para suas próprias tarefas, e esse histórico sendo compartilhado atrapalha o histórico de comandos de sessões específicas.

Existe uma maneira de desabilitar essa liberação, para que o histórico possa ser anexado ao histórico de comandos apenas no momento do logout?

Ou talvez exista uma maneira de solicitar que o histórico não atualize o histórico da linha de comando todas as vezes?

Responder1

Eu costumava ter vários shells rodando no screen. No meu .khsrc eu personalizaria várias configurações, incluindo $PS1 e $HISTFILE (e incluiria o nome base do dispositivo tty).

Isso foi relativamente fácil de reconstruir:

tty=$(basename $(tty))
histdir=~/.hist
mkdir -p $histdir
export HISTFILE=$histdir/history.$tty
export PS1=$USER@'$PWD ['$tty'] ${?#0}$ '
exec /usr/bin/ksh

Salve como ~/bin/screenshelle execute chmod +x ~/bin/screenshell. Agora você pode executar screene ter arquivos de histórico separados para cada janela.

SHELL=~/bin/screenshell screen

Exemplos:

Janela 3

    vagrant@/home/vagrant [3] 127$ history
    1       history
    2       error
    3       history

Janela 4

    vagrant@/home/vagrant [4] $ history
    1       history
    vagrant@/home/vagrant [4] $ echo $HISTFILE
    /home/vagrant/.hist/history.4
    vagrant@/home/vagrant [4] $ tty
    /dev/pts/4

Uma alternativa seria executar exec kshfrom .kshrc, mas você precisará de algum tipo de teste para evitar um loop exec.

informação relacionada