web-dev-qa-db-pt.com

História de Bash não é preservada entre sessões de terminal no Mac

Minha história de bash parou misteriosamente de funcionar, e eu não tenho ideia de como consertar isso. Isto é o que meu .bashrc se parece:

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

No entanto, quando eu executo echo $HISTFILE, ele imprime /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew.

Eu sou o proprietário do arquivo .bash_history, por isso não tenho certeza de como resolveria esse problema.

Obrigado!

28
Nelson Liu

Terminal atribui a cada sessão de terminal um identificador único e comunica-a através da variável de ambiente TERM_SESSION_ID para que os programas executados em um terminal possam salvar/restaurar o estado específico do aplicativo ao sair e reiniciar o Terminal com Continuar ativado.

Uma nova pasta (~/.bash_sessions /) é usada para armazenar os arquivos HISTFILE e .session que são exclusivos das sessões.

Durante a inicialização do Shell, o arquivo de sessão é executado. Arquivos antigos são excluídos periodicamente.

O comportamento padrão permite salvar e restaurar o histórico do comando bash independentemente para cada sessão de terminal restaurada. Também mescla comandos no histórico global para novas sessões.

Você pode desabilitar esse comportamento e compartilhar um único histórico, definindo

export Shell_SESSION_HISTORY=0

Se HISTTIMEFORMAT for definido, o histórico por sessão é desativado por padrão (leia mais em/private/etc/bashrc_Apple_Terminal)

O mecanismo de salvamento/restauração é desativado se o seguinte arquivo existir:

~/.bash_sessions_disable

A Apple já mudou algum comportamento desde o lançamento do El Capitan, então é melhor ler mais sobre isso aqui less /private/etc/bashrc_Apple_Terminal

23
diimdeep

Eu notei algo semelhante após o upgrade do El Capitan. Basta adicionar o arquivo .bash_sessions_disable no seu diretório inicial para desativar as novas sessões de bash e o .bash_history está de volta ao uso.

Este Reddit thread tem mais informações e links adicionais.

6
rabs

Você pode resolver o problema do RVM atualizando para a versão mais recente do RVM ou executando o seguinte:

  echo 'Shell_session_update' > $HOME/.bash_logout

Veja https://github.com/rvm/rvm/issues/354 para mais informações.

5
Alex Rojo

Esta resposta do Reddit thread = me salvou:

É provavelmente o RVM impedindo a saída "hook" para que o bash_sessions seja executado. Se você comentar a seguinte linha no seu .bash_profile, isso deve funcionar.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
3
noio

Eu estava vendo esse problema na High Sierra. De alguma forma, a minha própria .bash_history tinha se tornado propriedade do root e nem mesmo possuía permissões de leitura para outros usuários (quando o conteúdo do diretório home era visualizado com ls -al)

Não havia nada de importante nesse arquivo .bash_history, então fiz um Sudo rm .bash_history seguido de um toque .bash_history para criar um novo.

Tudo parece bem agora

0
Julian Jordan

Se for um Mac, suponho que seja o login padrão. O Shell é bash e executa .profile em vez de .bashrc. Então, você estava editando o arquivo errado.

0
theoden