Répondre:
Tout ce que vous devez faire est défini HISTSIZE
dans votre profil bash ( ~/.bash_profile
). Vous pouvez laisser HISTFILESIZE
unset . Cela configurera à la fois l'historique en mémoire et l'historique basé sur des fichiers.
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
Explication, informations supplémentaires.
Le problème est que HISTFILESIZE ne définit que l'historique maximum stocké dans un fichier lorsque vous démarrez une session. HISTSIZE est ce qui détermine le nombre de lignes enregistrées à la fin d'une session. Si HISTFILESIZE est plus grand que votre HISTSIZE, vous ne verrez jamais plus que votre HISTSIZE car le fichier est écrasé avec les commandes HISTSIZE ( sauf si vous définissez l'historique à ajouter, mais c'est un sujet distinct: recherchez histappend
dans les commandes intégrées du shell pour cela) .
C'est la raison pour laquelle vous ne voyez aucun effet. Avec HISTSIZE par défaut (probablement 500), votre fichier d'historique est toujours écrasé par les commandes $ HISTSIZE les plus récentes. Tout ce qui est plus ancien (qui pourrait potentiellement augmenter la liste au-delà de $ HISTSIZE) est effacé.
Dans la plupart des cas, il n'est pas nécessaire de définir HISTFILESIZE indépendamment de HISTSIZE.
HISTSIZE détermine combien de lignes seront écrites dans le fichier historique. La liste des commandes est tronquée à la sortie, avant d'écrire dans le fichier historique, en conservant N lignes les plus récentes. Par défaut, cette liste écrase le fichier d'historique.
HISTFILESIZE détermine la taille du fichier d'historique (en lignes). Le fichier est tronqué au démarrage, en conservant N lignes les plus récentes. De plus, le fichier d'historique est potentiellement tronqué chaque fois que HISTFILESIZE est défini.
Enfin, bien qu'il semble ne pas être documenté, BASH définit HISTFILESIZE en fonction de HISTSIZE si HISTSIZE est défini au démarrage. J'ai essayé cela sur macOS et quelques variétés d'Ubuntu, et le comportement est cohérent. Si vous définissez HISTSIZE dans un fichier de lancement (et non via la ligne de commande), HISTFILESIZE sera défini pour correspondre. (Essayez-le vous-même: définissez HISTSIZE sur une valeur arbitrairement grande dans .bash_profile, quittez et démarrez un nouveau terminal, puis echo $HISTSIZE $HISTFILESIZE
vous les trouverez correspondant.)
Par conséquent, il n'y a aucune raison de toucher HISTFILESIZE sauf si vous voulez des valeurs différentes, et les cas d'utilisation pour avoir des valeurs différentes sont rares (et impliquent généralement plus de paramètres de personnalisation de l'historique pour obtenir quelque chose d'utile).