J'utilise plusieurs terminaux Konsole. Et je veux que toutes les commandes que je tape dans chaque terminal soient enregistrées dans l'historique des commandes, de sorte que la prochaine konsole que j'ouvrirai aura toutes. Pour empêcher chaque terminal d'écraser l'historique des commandes de l'autre terminal, j'ai donné les paramètres suivants dans mon.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
J'ai donné la dernière ligne pour voir le numéro de commande dans mon invite. La commande no. n'a jamais dépassé 600, mais certaines de mes anciennes commandes disparaissent encore de l'histoire. Il existe de nombreuses commandes qui sont données à plusieurs reprises, mais comme prévu ignoredups
, cela n'augmente jamais la commande no in prompt. Pourtant, les anciennes commandes disparaissent toujours et le nombre de commandes dans l'histoire reste toujours légèrement supérieur à 500.
Le .bash_history
fichier contient encore beaucoup de doublons malgré les ignorés.
PS: Les sorties d'écho $HISTSIZE
et $HISTFILESIZE
sont à la fois=1000
Mise à jour: J'ai trouvé le problème dans l'entrée ci-dessus pour .bashrc
. Il suffit d' appeler history -a
à PROMPT_COMMAND
concatène simplement la dernière nouvelle commande au .bash_history. Donc, ignoredups
et erasedups
n'ont aucun effet.
Existe-t-il un moyen, je peux toujours écrire dans le .bash_history sans doublons de chaque terminal? Je ne veux pas charger tout l'historique à chaque invite de commande history -r
et le réécrire history -w
, car les commandes que j'ai émises dans un terminal apparaîtront également dans un autre terminal parallèle. Je veux que les commandes combinées n'apparaissent que dans un nouveau terminal.
Le casse-tête, pourquoi mon histoire était réduite à 500, est résolu. J'ai remarqué que cela arrivait chaque fois que je ssh dans cette machine. La création d'un .bash_profile
avec l'entrée suivante a résolu ce problème.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Maintenant, mon .bashrc est exécuté à chaque fois que je ssh aussi. Et la taille du fichier historique augmente désormais de façon monotone.
bug-bash
liste de diffusion un an après la publication de cette question: lists.gnu.org/archive/html/bug-bash/2013-07/msg00092.html