Certaines instances de bash modifient l'historique des commandes lorsque vous réutilisez et modifiez une commande précédente, d'autres ne le font apparemment pas. J'ai cherché et cherché, mais je ne trouve rien qui indique comment empêcher les commandes de l'historique d'être modifiées lorsqu'elles sont réutilisées et modifiées.
Il y a des questions comme celle-ci , mais cela semble dire comment faire face à l'histoire en cours d'édition. Je n'ai rencontré récemment qu'une instance de bash qui modifie l'historique lorsque vous réutilisez une commande - tous les shells bash précédents que j'ai utilisés ont (pour autant que je le remarque) été configurés pour ne pas modifier l'historique lorsque vous réutilisez et éditez une commande. (Peut-être que je n'ai pas prêté attention à mon histoire de coquille depuis environ 15 ans ...)
C'est donc probablement la meilleure question: PUIS-JE dire à bash de ne JAMAIS modifier l'historique - et si oui, comment?
la source
history -p
pour effectuer des extensions d'historique sans affecter le fichier d'historique. Vous pouvez fairehistory -s
de même et ajouter à l'historique sans exécution. Vous pouvez faireHISTIGNORE='start of a command I never want in history.*:command2.*'
pour garder certaines commandes hors de l'historique.set revert-all-at-newline on
dans la question que vous liez à résoudre votre problème? Pouvez-vous montrer comment reproduire le problème? Notez que vous pouvez également utiliserzsh
pour un comportement plus en ligne avec ce que vous voulez.history -p
est-ce que je devrais faire pour chaque commande que je veux réutiliser - est-ce vrai? Si c'est le cas, ce n'est pas tout à fait ce que je recherche. Comme je l'ai mentionné, j'ai utilisé des instances de bash qui ne modifient jamais l'historique lorsqu'une commande est réutilisée et modifiée.revert-all-at-newline
soit exactement ce dont j'ai besoin. Si je modifie une commande et appuie sur CTRL-C pour l'annuler, je ne veux pas non plus que cela affecte l'historique. Je n'ai jamais eu à configurer bash pour ne pas modifier l'historique, ce qui explique en partie pourquoi je me demande parfois pourquoi une nouvelle installation se comporte d'une manière et parfois de l'autre. Soit dit en passant, sur une instance qui ne modifie pas l'historique lors de la réutilisation des commandes, unbind -V | grep revert
indique qu'ilrevert-all-at-newline
est défini sur «off».bash
. Tout est question de readline. Il existe différentes implémentations de lareadline
bibliothèque, et elle a également son propre ensemble de paramètres (BEAUCOUP d'entre eux) et son propre fichier de configuration. Je ne sais pas exactement s'il s'agit d'un paramètre ou simplement d'une différence d'implémentation, mais vous devriez rechercher dans la documentation liée à readline, pas bash.Réponses:
Il s'avère que
revert-all-at-newline
c'est la réponse. Je devais l'inclureset revert-all-at-newline on
dans mon~/.inputrc
fichier, car l'utilisation de laset
commande à l'invite bash n'avait aucun effet. (Ensuite, bien sûr, j'ai dû lancer un nouveau shell.)En outre, j'ai trouvé qu'il
~/.inputrc
est chargé au lieu de/etc/inputrc
s'il est présent, ce qui signifie que les valeurs par défaut définies dans ce dernier ne sont plus actives lorsque vous créez~/.inputrc
. Pour résoudre ce problème, commencez~/.inputrc
par$include /etc/inputrc
.Merci à @ StéphaneChazelas de m'avoir pointé dans la bonne direction.
la source
Dans ~ / .bashrc, vous pouvez ajouter
la source
histappend
est activé, mais mon historique affiche toujours des modifications des commandes précédentes.