Question Pourquoi bash oublie-t-il parfois la commande saisie précédemment?


Entré dans un cas étrange sur un système Ubuntu Lucid:

ligne de commande bash fonctionne très bien la plupart du temps, mais pour certaines raisons parfois Vers le haut ne fonctionne pas pour rappeler la commande précédente. Il se souvient des précédents mais c'est comme si le dernier avait été oublié. Il faut donc le taper ou le recopier, vraiment ennuyeux ...

Une idée de ce qui pourrait causer cela?

la version bash est celle fournie avec la distribution, version 4.1.5 (1) (package: 4.1-2ubuntu3)


4
2017-10-11 20:27


origine




Réponses:


Les commandes entrées avec un espace de début ne sont généralement pas stockées dans l'historique de bash. Ceci est une fonctionnalité: si vous voulez bash ne pas pour mettre une commande dans l'histoire, comme une commande dangereuse comme rm -rf ..., placez un espace devant lui. En outre, les commandes en double peuvent être ignorées.

Ce comportement est configurable avec le HISTCONTROL variable. De man bash:

HISTCONTROL

Une liste de valeurs séparées par des deux-points contrôlant la manière dont les commandes sont enregistrées dans la liste d'historique. Si la liste de valeurs   comprend ignorespace, les lignes qui commencent par un espace ne sont pas enregistrées dans la liste de l'historique. Une valeur de ignoredup provoque des lignes   correspondant à l'entrée de l'historique précédent pour ne pas être enregistré. Une valeur de ignoreboth est un raccourci pour ignorespace et ignoredups. Une valeur de   erasedups supprime de la liste d'historique toutes les lignes précédentes correspondant à la ligne en cours avant que cette ligne ne soit enregistrée. De n'importe quelle valeur   ne pas                 dans la liste ci-dessus est ignoré. Si HISTCONTROL n'est pas défini ou n'inclut pas de valeur valide, toutes les lignes lues par l'analyseur de shell   sont                 enregistré dans la liste d'historique, sous réserve de la valeur de HISTIGNORE. Les deuxième et suivante lignes d'un composé multiligne   commander                 ne sont pas testés et sont ajoutés à l'historique indépendamment de la valeur de HISTCONTROL.

Pour voir comment votre shell est configuré, exécutez:

echo $HISTCONTROL

Pour passer à un nouveau paramètre, modifiez votre ~/.bashrc fichier.


9
2017-10-11 20:42



Droit sur .bashrc avait HISTCONTROL=ignoredups:ignorespace. - riverflow
Je ne le savais pas! Merci pour le conseil utile! - KevinM