L'historique des commandes Bash ne fonctionne pas

13

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 certaines commandes que j'ai exécutées en sudo -smode et j'ai essayé de nouveau la même chose et toutes les commandes pendant la 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

v2r
la source
2
Alors ... qu'essayez-vous exactement d'accomplir? Vous ne semblez pas poser de question ici: /
Thomas Ward
4
Le mode 777 n'est pas nécessaire, il n'a surtout rien à voir avec le drapeau 'exécutable' (le mode par défaut est 600). Le ~/.bash_historyest écrit lorsque vous vous déconnectez (pour accéder aux nouvelles commandes, vous pouvez utiliser la historycommande). Mais je ne vois pas non plus le problème ..
Onedinkenedi

Réponses:

16

Les commandes ne sont pas visibles car Bash enregistre l'historique dans le fichier .bash_history uniquement après la fermeture du shell, et cela se produit très rarement avec Guake. Il existe une solution simple pour que Bash ajoute l'historique (au lieu de remplacer le fichier) après chaque commande

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
Adam Byrtek
la source
4
Pure génial. J'aurais aimé le savoir il y a 5 ans.
HDave
8

Lié, généralement, comment cela est cassé si vous exécutez une commande avant d'avoir un fichier .bash_history, car il sera créé par root au lieu de votre utilisateur.

khamer
la source
2

Il peut également s'agir de root: root possède votre .bash_history (ROOT NE DEVRAIT PAS ÊTRE LE PROPRIÉTAIRE, VOTRE UTILISATEUR DEVRAIT ÊTRE LE PROPRIÉTAIRE!), Dans ce cas, vous devez:

#chown user:user .bash_history

Cela pourrait apparemment se produire si vous en faites sudo bashbeaucoup!

mahatmanich
la source