83 votes

.bash_history ne se met pas à jour dans Git pour Windows (git bash)

J'utilise Git pour Windows (ver. 1.7.8-preview20111206) et bien que j'ai un fichier .bash_history dans mon dossier HOME, il n'est jamais mis à jour automatiquement. Lorsque je lance Git Bash, je peux voir dans l'historique les commandes que j'ai ajoutées manuellement au fichier .bash_history, mais il n'est pas mis à jour automatiquement.

J'ai utilisé le shopt -s histappend pour m'assurer que l'historique est sauvegardé à chaque fois que je ferme le shell, mais cela ne fonctionne pas.

Si j'utilise manuellement la fonction history -w mon fichier est mis à jour, mais je voudrais comprendre pourquoi la commande shopt ne fonctionne pas comme je le pense.

Quelqu'un peut-il me dire pourquoi ce comportement se produit ?

5voto

Sylvain Points 355

Une réponse plus complète de Unix Stackexchange par Pablo R. et LinuxSecurityFreak :

Ajoutez ce qui suit à votre ~/.bashrc

# Avoid duplicates
HISTCONTROL=ignoredups:erasedups
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

Soyez prudent : "Le problème avec cette solution PROMPT_COMMAND est que les numéros de chaque élément de l'historique changent après chaque commande :(. Par exemple, si vous tapez history (1) ls (2) rm, alors vous faites !1 pour répéter (1), le numéro d'historique peut changer et la commande rm peut être exécutée..." (Chris Kimpton)

1voto

Samuel Souza Points 11

Pour moi, ce qui a fonctionné, c'est d'entrer dans C:\Users\MY_USER\ et en supprimant le fichier .bash_profile.

Ps : J'utilise Windows 10

1voto

mmahgoub Points 2195

J'utilise Windows 10, pour moi c'était un problème d'autorisation, ma solution temporaire a été d'ajouter le groupe Tout le monde et de lui donner le contrôle total sur ~/.bash_history fichier.

0voto

d.lacher Points 13

D'ailleurs, pour ceux qui utilisent la version portable de Git pour Windows, il n'est pas nécessaire de créer des fichiers .bash_profile ou .bashrc. Il suffit d'ajouter à C:<path to your Git Portable folder>\etc\bash.bashrc :

PROMPT_COMMAND='history -a'

0voto

La réponse se trouve dans un autre message : https://superuser.com/questions/555310/bash-save-history-without-exit

Si vous souhaitez qu'un historique soit mis à jour entre deux terminaux.

En tant qu'utilisateur de Windows, j'ai créé un fichier .bash_profile dans mon dossier utilisateur. Puis j'ajoute le contenu suivant : PROMPT_COMMAND='history -a;history -c;history -r'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X