Existe-t-il un moyen de suspendre temporairement le suivi de l’historique dans bash, de manière à entrer dans une sorte de mode "incognito"? J'entre des informations dans mon terminal que je ne veux pas, des informations financières sensibles.
Existe-t-il un moyen de suspendre temporairement le suivi de l’historique dans bash, de manière à entrer dans une sorte de mode "incognito"? J'entre des informations dans mon terminal que je ne veux pas, des informations financières sensibles.
Réponses:
Cela devrait être ce que vous cherchez:
unset HISTFILE
man bash
Si HISTFILE n'est pas défini ou si le fichier d'historique n'est pas enregistrable, l'historique n'est pas enregistré.
Alternativement, si vous voulez le désactiver puis le réactiver, il sera peut-être plus facile à utiliser set
:
set +o history
set -o history
set +o history
et set -o history
basculer quand je fais des trucs secrets;)
unset HISTFILE
ne marche pas. set -/+o history
fonctionne comme un charme! merci
À l'aide de bash, définissez HISTCONTROL="ignorespace"
et faites précéder d'un espace toute commande que vous ne souhaitez pas enregistrer dans l'historique. Si vous avez oublié de prendre des mesures, vous pouvez également history -d <number>
supprimer une entrée spécifique ou history -c
effacer l’historique complet des commandes.
Assurez-vous que HISTCONTROL
contient ignorespace
. Vous voudrez probablement ajouter HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
ou quelque chose) à votre ~/.bashrc
. Ensuite, toute ligne de commande commençant par un espace est omise de l'historique.
Une autre possibilité consiste à démarrer une nouvelle session bash qui n'enregistre pas l'historique.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Si vous devez éviter de stocker plusieurs commandes et que vous souhaitez toujours utiliser la flèche vers le haut pour accéder aux commandes précédentes, utilisez:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Il existe quatre manières (niveaux) de contrôler la manière dont les commandes sont stockées.
La première et la plus simple consiste à utiliser ignorespace
(ou à ignorer):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Cela permettra d'utiliser un espace avant les commandes que vous souhaitez éviter d'être enregistrées dans la liste de mémoire history
. En conséquence, aucune commande enregistrée en mémoire pouvant être envoyée au fichier évitera également l’ envoi d’ une commande au fichier répertorié dans $HISFILE
.
Évitez d’enregistrer des commandes dans le fichier dans $HISTFILE
:
$ unset HISTFILE
Si non défini, l'historique des commandes n'est pas enregistré lorsqu'un shell se ferme.
Null HISTFILE=''
et / ou paramétré pour HISTFILE=/dev/null
fonctionner dans le même sens. Comprenez que les commandes sont toujours enregistrées dans la liste de mémoire, essayez la history
commande ou la flèche vers le haut.
Attention: si HISTFILE est réinitialisé avant que le shell existe, tout ce qui a été enregistré en mémoire pourrait quand même être écrit dans le fichier.
Évitez d’enregistrer de nouvelles commandes dans l’historique. Et, comme ne pas être en mémoire, ne peut pas être enregistré dans un fichier.
$ shopt -ou history # or set +o history
Réactiver avec shopt -os history
(ou set -o history
)
Supprime toutes les commandes de la liste d'historique en mémoire:
$ HISTSIZE=0
Toutes les commandes sont effacées (de la mémoire) et par conséquent, rien ne peut être stocké dans un fichier, bien sûr, jusqu'à ce que la variable soit redéfinie sur une valeur numérique valide.
man history
ne va pas le couper pour la plupart d'entre nous.
HISTIGNORE
, que subsumes
la fonction de HISTCONTROL
.
LESS=+'/^ *HISTI' man bash
(n'est-ce pas les "pages de manuel"?). @NathanBasanese
Il existe un moyen simple de désactiver l'historique pour que les commandes ne soient pas stockées dans le .bash_history
fichier.
Vous devez mettre les espaces ou les espaces de tabulation devant toute commande afin que cette commande ne soit pas stockée dans l'historique. Par exemple:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
La pwd
commande ne sera pas enregistrée dans l'historique, car elle comporte des espaces à l'avant.
export HISTFILE=/dev/null
C'est ma façon de faire. HISTORY / HISTFILE / HISTCONTROL, etc ... ne fonctionne pas, l'exporter vers / dev / null a toujours fonctionné pour moi.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
n'est vérifiée que lorsque bash se ferme, de sorte que la première méthode ne fonctionne pas telle quelle (si vous restaurez la valeur, la commande sera enregistrée).set +o history
ne fonctionne comme dirigé.