Je veux que mon .bash_history
fichier soit illimité. Par exemple, je peux toujours revenir en arrière et voir comment j'ai construit / configuré quelque chose, ou quelle était cette commande astucieuse, ou comment une commande a cassé quelque chose il y a des semaines. Comment modifier ce paramètre?
350
Réponses:
Définissez
HISTSIZE
etHISTFILESIZE
dans .bashrc sur une chaîne vide:Dans bash 4.3 et versions ultérieures, vous pouvez également utiliser
HISTSIZE=-1 HISTFILESIZE=-1
:la source
HISTSIZE= HISTFILESIZE=
entraîne la désactivation complète de l'historique de bash, du moins pour moi.HISTSIZE=-1 HISTFILESIZE=-1
désactivé mon historique, tout en faisantHISTSIZE= HISTFILESIZE=
l'affaire. CentOS 7 ici.HISTSIZE= HISTFILESIZE=
vous ne devriezexport HISTSIZE=
export HISTFILESIZE=
Après de nombreuses itérations grandes et laides et des cas de bord étranges au fil des ans, j'ai maintenant une section concise de mon .bashrc dédiée à cela.
Tout d'abord, vous devez commenter ou supprimer cette section de votre .bashrc (par défaut pour Ubuntu). Si vous ne le faites pas, certains environnements (comme l'exécution de
screen
sessions) tronqueront toujours votre historique:Ensuite, ajoutez ceci au bas de votre .bashrc:
Remarque: chaque commande est écrite immédiatement après son exécution, donc si vous collez accidentellement un mot de passe, vous ne pouvez pas simplement "tuer -9 %%" pour éviter l'écriture de l'historique, vous devrez le supprimer manuellement.
Notez également que chaque session bash chargera le fichier historique complet en mémoire, mais même si votre fichier historique atteint 10 Mo (ce qui prendra très, très longtemps ), vous ne remarquerez pas beaucoup d'effet sur le temps de démarrage de bash.
la source
HISTFILESIZE=
etHISTSIZE=
vide au lieu de -1, et assurez-vous que vous n'avez pas d'autres déclarations de ces paramètres dans un .bashrc ou .bash_profile ou .profile..bashrc
, j'ai eu cette configuration après sur un autre fichier chargé par .bashrc ..., qui fonctionne maintenant! THX!cat ~/.bash_history >>~/.bash_eternal_history
HISTFILESIZE
(et éventuellementHISTSIZE
) prendra effet immédiatement ne peut pas être trop souligné .Comme Jörg Beyer l'a mentionné ci-dessus,
HISTSIZE
etHISTFILESIZE
sont essentiels.En outre, vous devez absolument vérifier la variable d'environnement
HISTCONTROL
, qui vous permet de faire des choses intéressantes comme ne pas stocker les commandes d'historique en double (HISTCONTROL=erasedups
). Il est inutile d'avoir un historique illimité si vous devez parcourir des centaines de lignes decd ..
ou similaires.Liens: ici , et travailler avec l'historique bash . La FAQ de la variable bash vaut également la peine d'être parcourue .
la source
Ctrl-r
certains charsCtrl-o
Ctrl-o
Ctrl-o
Ctrl-o
. C'est pourquoi je garde des doublons dans l'histoire.Ctrl-o
?Ctrl-o
exécute la commande à l'invite et affiche immédiatement la commande juste après la précédente de l'historique. Un avantage est qu'après avoir utiliséCtrl-r
pour trouver une ancienne commande (éventuellement en utilisant les flèches haut et bas pour passer aux commandes voisines dans l'historique), il suffit de maintenirCtrl
enfoncé et d'appuyero
plusieurs fois pour exécuter à nouveau une série de commandes précédente, même en boucle infinie si tu veux. Voir aussi GNU Readline - WikipediaIl existe (au moins) deux variables d'environnement pertinentes ici:
Je pense que nous pouvons convenir que le terme illimité est souvent le même que très grand (ou avez-vous un stockage de fichiers illimité?). Il suffit donc de définir des valeurs très grandes.
la source