Vous pouvez supprimer uniquement la ligne incriminée de bash au lieu d'effacer tout l'historique. Supprimez simplement la ligne avec le -d flag, puis enregistrez (écrivez) le nouvel historique avec le -w drapeau :
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
Il y a deux parties :
bashstocke l'historique dans un fichier~/.bash_historyqui est, par défaut, écrit à la fin de la session- le
historyqui est gardé en mémoire
Pour être sûr, vous devez l'effacer de la session :
history -c
et tronquer le fichier d'historique si nécessaire :
> ~/.bash_history
Si votre session dans laquelle vous avez tapé le mot de passe est toujours ouverte, alors un autre moyen de couvrir votre trace est de définir le HISTFILE variable au périphérique nul afin que l'historique ne soit pas écrit dans ~/.bash_history lorsque la session se termine :
export HISTFILE=/dev/null
Étant donné que bash (au moins toutes les versions historiques et actuelles que je connais) n'enregistre pas automatiquement l'historique jusqu'à ce que vous quittiez, une stratégie généralement applicable lorsque vous avez tapé une commande dont vous voulez vous assurer qu'elle ne sera jamais enregistrée consiste à taper immédiatement :
kill -9 $$
Cela tue le shell avec SIGKILL , qui ne peut pas être intercepté, de sorte que le shell n'a aucun moyen de sauvegarder quoi que ce soit à la sortie.
La plupart des autres approches impliquent un nettoyage après coup (c'est-à-dire après que les données ont déjà atteint le disque), ce qui a beaucoup plus de risques d'erreur (manquer une copie), surtout si le système utilise btrfs ou similaire.