Infra - Linux

Compartilhamento do histórico do bash entre múltiplas sessões

Em um ambiente de janelas, frequentemente temos diversos terminais em execução, e cada um deles com seu histórico de comandos...

por Rubens Queiroz de Almeida



Em um ambiente de janelas, frequentemente temos diversos terminais em execução, e cada um deles com seu histórico de comandos. Suponhamos que eu tenha uma janela com centenas de comandos executados, e outra com apenas cinco comandos. Se eu encerrar a segunda sessão primeiro, o histórico é sobrescrito e eu ficou com apenas os cinco comandos da segunda janela registrados. O ideal seria que o histórico fosse comum e dinâmico, ou seja, cada comando executado ficando disponível para todas as sessões em execução.

Executando o comando

  tail -f .bash_history

em uma das janelas, vemos os comandos sendo executados. Mas se fecharmos uma outra janela, vejam o que acontece:

  tail: .bash_history: arquivo truncado

Perdemos tudo que estava lá. A sessão que foi fechada truncou o arquivo .bash_history.

Para eliminar este problema, precisamos fazer com que a shell bash acrescente imediatamente, ao arquivo do histórico, os comandos executados em todas as sessões. Para isto, especificamos, no arquivo .bashrc, a seguinte diretiva:

  history -a

Eu acho esta forma de trabalho bastante conveniente. Eu considero particularmente irritante ter uma sessão de histórico para cada janela aberta. Não sei porque o padrão não é assim.

Aproveitando, no Twitter, tem um usuário chamado @bashtips, que fornece dicas curtas de bash. Vale a pena acompanhar.

Rubens Queiroz de Almeida

Rubens Queiroz de Almeida - Mantenedor do site Dicas-L (http://www.dicas-l.com.br).