Réponse courte:
HISTSIZE
est le nombre de lignes ou de commandes qui sont stockés en mémoire dans une liste de l'historique, tandis que votre bash session est en cours.
HISTFILESIZE
est le nombre de lignes ou de commandes qui (a) sont autorisés dans le fichier de l'historique au moment du démarrage d'une session, et (b) sont stockés dans le fichier de l'historique à la fin de votre session bash pour une utilisation dans de futures sessions.
Avis de la distinction entre le fichier sur le disque et la liste en mémoire.
Réponse longue:
Toutes les infos ci-dessus + quelques exemples:
HISTFILESIZE=10
et HISTSIZE=10
- Vous commencez votre session.
- Votre HISTFILE (fichier qui stocke votre commande bash histoire), est tronqué à contenir HISTFILESIZE=10 lignes.
- Vous écrire 50 lignes.
- À la fin de votre 50 commandes, les commandes de 41 à 50 sont dans votre liste de l'historique, dont la taille est déterminée par HISTSIZE=10.
- Vous mettez fin à votre session.
- En supposant
histappend
n'est pas activé, les commandes de 41 à 50 sont enregistrés sur votre HISTFILE qui a maintenant le 10 commandes qu'il a tenu au début plus de 10 nouvellement écrit commandes.
- Votre HISTFILE est tronqué à contenir HISTFILESIZE=10 lignes.
- Vous avez maintenant 10 commandes dans votre histoire - les 10 dernières que vous venez de taper dans la session vient de se terminer.
- Lorsque vous démarrez une nouvelle session, vous recommencez à 1 avec un HISTFILE de HISTFILESIZE=10.
HISTFILESIZE=10
et HISTSIZE=5
- Vous commencez votre session.
- Votre HISTFILE (fichier qui stocke votre commande bash histoire), est tronqué à contenir au plus HISTFILESIZE=10 lignes.
- Vous écrire 50 lignes.
- À la fin de votre 50 commandes, commandes 46 à 50 sont dans votre liste de l'historique, dont la taille est déterminée par HISTSIZE=5.
- Vous mettez fin à votre session.
- En supposant
histappend
n'est pas activé, les commandes de 46 à 50 sont enregistrés sur votre HISTFILE qui a maintenant le 10 commandes qu'il a tenu au début plus de 5 nouvellement écrit commandes.
- Votre HISTFILE est tronqué à contenir HISTFILESIZE=10 lignes.
- Vous avez maintenant 10 commandes dans votre histoire - 5 à partir d'une session précédente, et les 5 derniers que vous venez de taper dans la session vient de se terminer.
- Lorsque vous démarrez une nouvelle session, vous recommencez à 1 avec un HISTFILE de HISTFILESIZE=10.
HISTFILESIZE=5
et HISTSIZE=10
- Vous commencez votre session.
- Votre HISTFILE (fichier qui stocke votre commande bash histoire), est tronqué à contenir au plus HISTFILESIZE=5 lignes.
- Vous écrire 50 lignes.
- À la fin de votre 50 commandes, les commandes de 41 à 50 sont dans votre liste de l'historique, dont la taille est déterminée par HISTSIZE=10.
- Vous mettez fin à votre session.
- En supposant
histappend
n'est pas activé, les commandes de 41 à 50 sont enregistrés sur votre HISTFILE qui a maintenant le 5 commandes qu'il a tenu au début plus de 10 nouvellement écrit commandes.
- Votre HISTFILE est tronqué à contenir HISTFILESIZE=5 lignes.
- Vous avez maintenant 5 commandes dans votre histoire - les 5 dernières que vous venez de taper dans la session vient de se terminer.
- Lorsque vous démarrez une nouvelle session, vous recommencez à l'étape 1 avec un HISTFILE de HISTFILESIZE=5.
Info de elixir_sinari:
L'histoire "fichier" n'est pas mis à jour à mesure que vous tapez les commandes. L'
les commandes sont stockés dans une "liste" séparément (accessible par l'histoire
de commande). Le nombre de ces stockées commandes est contrôlée par
HISTSIZE valeur. Lorsque le shell (interactif) sorties de secours, le dernier
$HISTSIZE lignes sont copiées/annexé à $HISTFILE de cette "liste".
Si HISTFILESIZE est définie, à l'issue de cette opération, il est assuré
que seulement $HISTFILESIZE lignes (dernière) existent dans $HISTFILE . Et
lorsque le shell démarre, la "liste" est initialisé à partir de $HISTFILE jusqu'à
un maximum de $HISTSIZE commandes.
Et à partir de l' man bash
page:
La valeur
de la HISTSIZE variable est utilisée comme le nombre de commandes pour enregistrer dans une liste de l'historique. Le texte de la dernière HISTSIZE commandes
(par défaut 500) est enregistré. (...)
Au démarrage, l'histoire est initialisé à partir d'un fichier nommé par la variable HISTFILE (par défaut ~/.bash_history). Le fichier nommé par
la valeur de HISTFILE est
tronqué, si nécessaire, pour ne pas contenir plus que le nombre de lignes spécifié par la valeur de HISTFILESIZE. (...) Quand un shell interactif de sortie, le dernier $HISTSIZE lignes
sont copiés à partir de l'histoire
liste de $HISTFILE. Si le histappend shell option est activée (voir la description de shopt en vertu de commande interne du SHELL de COMMANDES ci-dessous), le
les lignes sont ajoutées à la
histoire de fichier, sinon le fichier d'historique est écrasé. Si HISTFILE est pas défini, ou si le fichier d'historique est unwritable, l'histoire
n'est pas enregistré. (...) Après l'enregistrement de l'histoire, la
histoire de fichier est tronqué
pour ne pas contenir plus de HISTFILESIZE lignes. Si HISTFILESIZE n'est pas de jeu, pas de troncature est effectuée.