web-dev-qa-db-fra.com

Historique Bash non conservé entre les sessions de terminal sur Mac

Mon histoire de bash a mystérieusement cessé de fonctionner et je ne sais pas comment la réparer. Voici à quoi ressemble mon .bashrc:

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

Cependant, quand je lance echo $HISTFILE, il affiche /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew.

Je suis le propriétaire du fichier .bash_history, je ne suis donc pas trop sûr de la manière dont je réglerais ce problème.

Merci!

28
Nelson Liu

Terminal attribue à chaque session de terminal un identifiant unique et le communique via la variable d’environnement TERM_SESSION_ID afin que les programmes exécutés dans un terminal puissent enregistrer/restaurer l’état spécifique à l’application lors de la fermeture et du redémarrage du terminal avec la reprise activée.

Un nouveau dossier (~/.bash_sessions /) est utilisé pour stocker les fichiers HISTFILE et .session uniques aux sessions.

Au démarrage du shell, le fichier de session est exécuté. Les anciens fichiers sont périodiquement supprimés.

Le comportement par défaut consiste à enregistrer et à restaurer l'historique des commandes bash indépendamment pour chaque session de terminal restaurée. Il fusionne également les commandes dans l'historique global pour les nouvelles sessions.

Vous pouvez désactiver ce comportement et partager un seul historique en définissant

export Shell_SESSION_HISTORY=0

Si HISTTIMEFORMAT est défini, l'historique par session est désactivé par défaut (pour plus d'informations, consultez/private/etc/bashrc_Apple_Terminal).

Le mécanisme de sauvegarde/restauration est désactivé si le fichier suivant existe:

~/.bash_sessions_disable

Apple a déjà changé certains comportements depuis la sortie d'El Capitan, il est donc préférable d'aller en savoir plus à ce sujet ici less /private/etc/bashrc_Apple_Terminal

23
diimdeep

J'ai remarqué quelque chose de similaire après la mise à niveau d'El Capitan. Ajouter simplement le fichier .bash_sessions_disable dans votre répertoire personnel désactive les nouvelles sessions bash et le .bash_history est de nouveau utilisé.

Ce fil de discussion Reddit contient plus d'informations et d'autres liens.

6
rabs

Vous pouvez résoudre le problème RVM en mettant à jour la dernière version de RVM ou en l’exécutant:

  echo 'Shell_session_update' > $HOME/.bash_logout

Voir https://github.com/rvm/rvm/issues/3540 pour plus d'informations.

5
Alex Rojo

Cette réponse du fil Reddit m'a sauvé:

C'est probablement RVM qui empêche la sortie "hook" pour que bash_sessions s'exécute. Si vous commentez la ligne suivante dans votre fichier .bash_profile, cela devrait fonctionner.

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

Je voyais ce problème sur High Sierra. D'une manière ou d'une autre, mon propre .bash_history était devenu la propriété de root et n'avait même pas les permissions de lecture pour les autres utilisateurs (lorsque le contenu du répertoire personnel était visualisé avec ls -al)

Il n’y avait aucune conséquence dans ce fichier .bash_history, alors j’ai fait une copie de Sudo .bash_history suivie d’un contact .bash_history pour en créer un nouveau.

Tout semble bien maintenant

0
Julian Jordan

Si c'est un Mac, je suppose que le login par défaut Shell est bash et qu'il exécute .profile au lieu de .bashrc Donc, vous éditiez le mauvais fichier.

0
theoden