Supprimer l'historique du terminal sous Linux [fermé]

170

Lorsque vous utilisez la touche haut dans un terminal Linux, vous pouvez à nouveau utiliser les commandes précédentes. Excellente fonctionnalité. Cependant, j'ai commencé à connecter mysql dans mysql avec les détails sensibles de la commande.

Comment puis-je supprimer cet historique?

Frank Vilea
la source
Désolé, j'ai complètement oublié de mentionner que j'utilise bash.
Frank Vilea
16
Puisque cette question est fermée, je ne peux pas l'ajouter comme réponse. Vous pouvez dire à bash de ne sauvegarder aucun historique pour une session particulière avec cette commande:export HISTFILE=/dev/null
Chris Eberle
1
Je peux également ajouter ceci: ne pas entrer d'informations sensibles dans la ligne de commande - attendez l'invite: D
hummingBird

Réponses:

343

Vous pouvez effacer votre historique de bash comme ceci:

history -cw

Eddie
la source
4
Vraiment comme cette réponse - cela prend effet immédiatement, plutôt que de supprimer .bash_historyce qui nécessite le redémarrage du shell pour prendre effet.
mikemaccana du
1
Ne fonctionne pas sur ma machine Ubuntu 14.04. L'histoire apparaît juste avec le nouveau terminal. Tout ce qui a fonctionné est >~/bash_history. Je dois redémarrer le terminal pour cela.
Aniket Thakur
Fonctionne également sur Mac OS X El Capitan (testé sur la version 10.11.2), mais vous devez ajouter la ligne suivante à votre ~/.bash_profile:, export SHELL_SESSION_HISTORY=0puis faites un source ~/.bash_profileet pour terminer, quittez et redémarrez votre application Terminal. Si vous voulez comprendre ce que fait cette commande d'exportation, vous devez absolument vérifier ce lien suivant: superuser.com/questions/950403/…
King-Wizard
1
n'est pas seulement -c suffisant? Manuals indique que -c efface la liste d'historique en supprimant toutes les entrées. -w renvoie l'historique actuel au fichier d'historique et les ajoute à la liste d'historique. Juste -c fonctionne bien.
Kahn
24

Si vous utilisez bash, l'historique du terminal est enregistré dans un fichier appelé .bash_history. Supprimez-le et l'historique sera parti.

Cependant, pour MySQL, la meilleure approche consiste à ne pas entrer le mot de passe dans la ligne de commande. Si vous spécifiez simplement l'option -p, sans valeur, vous serez invité à entrer le mot de passe et il ne sera pas enregistré.

Une autre option, si vous ne souhaitez pas saisir votre mot de passe à chaque fois, est de le stocker dans un fichier my.cnf. Créez un fichier nommé ~ / .my.cnf avec quelque chose comme:

[client]
user = <username>
password = <password>

Assurez-vous de modifier les autorisations du fichier afin que vous seul puissiez lire le fichier.

Bien sûr, de cette façon, votre mot de passe est toujours enregistré dans un fichier en clair dans votre répertoire personnel, tout comme il était précédemment enregistré dans .bash_history.

Sagi
la source
4
+1 pour spécifier -p. C'est tout à fait la bonne approche pour ce problème
andyb
2
En fait, sur mon système Linux, bash se souvient de l'historique et recrée le fichier à la déconnexion. Vous devrez vous connecter, supprimer le fichier, vous reconnecter, vous déconnecter du premier shell, supprimer le fichier, puis vous déconnecter du second shell.
cHao du
Merci d'avoir fait remarquer cela. Je pensais être intelligent en utilisant l'option -p + password directement dans la commande car il était tellement plus rapide d'appuyer simplement sur la flèche vers le haut car j'ai un mot de passe très long. Il est temps de reconsidérer ..
Frank Vilea
5
N'oubliez pas de faire en unset HISTFILEsorte que l'historique actuel ne soit pas enregistré.
Ignacio Vazquez-Abrams
J'ai édité ma réponse et ajouté une solution qui empêche d'entrer le mot de passe à chaque fois.
sagi