.png)
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/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
from .kshrc
, mas você precisará de algum tipo de teste para evitar um loop exec.