web-dev-qa-db-fra.com

L'historique des commandes Bash ne fonctionne pas

L'historique des commandes entre les sessions n'est pas enregistré. J'utilise guake et l'historique de la session fonctionne bien.

J'ai remarqué que . Bash_history avait quelques commandes que j'ai exécutées en mode Sudo -s et que j'ai réessayé la même chose et que toutes les commandes en cours de session ont été enregistrées. J'ai donc essayé chmod 777 .bash_history

Maintenant, les anciennes commandes apparaissent au début d'une session, mais aucune nouvelle commande n'est enregistrée.

Merci d'avance

13
user12663

Les commandes ne sont pas visibles car Bash enregistre l'historique dans le fichier .bash_history uniquement après la fermeture du shell, ce qui se produit très rarement avec Guake. Il y a ne solution de contournement simple pour que Bash ajoute l'historique (au lieu d'écraser le fichier) après chaque commande

shopt -s histappend
Prompt_COMMAND="history -a;$Prompt_COMMAND"
15
Adam Byrtek

Dans le même ordre d'idées, la manière dont cela se rompt si vous utilisez une commande Sudo avant d'avoir un fichier .bash_history, car elle sera créée par root et non par votre utilisateur.

8
khamer

Voir http://mywiki.wooledge.org/BashFAQ/088 pour savoir comment éviter de perdre des lignes de l'historique et une explication des effets secondaires que cela entraîne.

3
geirha

Il se pourrait également que root: root soit propriétaire de votre .bash_history (ROOT NE DEVRAIT PAS ÊTRE PROPRIÉTAIRE, VOTRE UTILISATEUR DEVRAIT ÊTRE PROPRIÉTAIRE!). Dans ce cas, vous devez:

#chown user:user .bash_history

Cela pourrait apparemment arriver si vous faites Sudo bash beaucoup!

2
mahatmanich