Transformar o histórico de descarga em ksh após cada comando (ou parar de atualizá-lo)

1

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, isso me deixa louco!

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

Existe uma maneira que eu poderia desabilitar esse flushing, então o histórico poderia ser anexado ao histórico de comandos somente 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 a cada vez?

    
por Grzegorz 30.05.2018 / 19:34

1 resposta

0

Eu costumava ter vários shells em execução em screen . No meu .khsrc, eu personalizaria várias configurações, incluindo $ PS1 e $ HISTFILE (e inclua 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 isso como ~/bin/screenshell e execute chmod +x ~/bin/screenshell . Agora você pode executar screen e 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 ksh de .kshrc , mas você precisará de algum tipo de teste para evitar um loop exec.

    
por 31.05.2018 / 14:32