Crie um script em algum lugar assim.
~ / bin / myshell
#!/bin/bash
HISTFILE=~/.bash_history_w$WINDOW
# HISTFILE=~/.bash_history_w${WINDOW}_s${STY##*.} # with session name.
export HISTFILE
exec /bin/bash
Ajuste seu .screenrc com uma linha como esta.
shell ~/bin/myshell
Thanks, but there is a problem: It seems the files don't actually get written until I close a window. In my case though, the windows will always be active and never closed. How can I trigger that the files get written without closing the windows?
Você pode forçar manualmente uma gravação executando o comando history -w
. Eu não acredito que haja qualquer maneira de fazer com que o bash automaticamente confirme o histórico, exceto na saída. Parece haver uma opção para fazer isso em zsh , mas procure por INC_APPEND_HISTORY.
Se você quiser um registro do que foi feito por sessão, você pode usar o script para isso. Se você quisesse usar o script para criar uma sessão + registro de janelas sob script, você poderia ajustar o myshell desta forma.
#!/bin/bash
SHELL=/bin/bash # reset the shell back to bash since screen -s will adjust to to myshell
export SHELL
script -a -q -f ~/.sessionlog_w${WINDOW}_s${STY##*.}