230 votes

Exécuter une commande sans la conserver dans l'historique

Je veux exécuter certaines commandes mais je ne veux pas les stocker dans l'historique des commandes. Pour que personne ne puisse le rechercher dans le fichier .bash_history .

Existe-t-il un moyen d'exécuter les commandes bash de cette façon?

337voto

u-punkt Points 1094

Commencez votre commande avec un espace et il ne sera pas inclus dans l'histoire.

Sachez que cela ne nécessite la variable d'environnement $HISTCONTROL à être mis.

  • Vérifiez que la commande suivante renvoie ignorespaceou ignoreboth

    #> echo $HISTCONTROL
    
  • Pour ajouter la variable d'environnement si elle est manquante, la ligne suivante peut être ajouté à la fête de profil. E. g. %HOME/.bashrc

    export HISTCONTROL=ignorespace
    

Après la recherche de profil à nouveau l'espace préfixé commandes ne sont pas écrites $HISTFILE

62voto

Miquel Points 7036

Dans n'importe quelle session bash, définissez le fichier d'historique sur / dev / null en tapant:

export HISTFILE = / dev / null

Notez que, comme indiqué dans les commentaires, cela n’écrira aucune commande de cette session dans l’historique!

Juste ne plaisante pas avec le dur travail de votre administrateur système, s'il vous plaît;)

[UPDATE] La solution de @ Doodad est plus élégante. Désactivez simplement la variable: unset HISTFILE (merci!)

10voto

Basile Starynkevitch Points 67055

Vous pourriez envisager d'utiliser un shell sans historique, comme peut-être

 /bin/sh << END
   your commands without history
END
 

(peut-être /bin/dash ou /bin/sash pourrait être plus approprié que /bin/sh

ou encore mieux utilisez l'utilitaire batch , par exemple

 batch << EOB
   your commands
EOB
 

L'historique contiendrait alors sh ou batch ce qui n'est pas très significatif

4voto

user3270492 Points 11

Vous pouvez également utiliser la commande suivante:

 echo toto; history -d $(history | sed -n '$s/\s*\([0-9]*\)\s*.*$/\1/p')
 

Je pense que c'est une commande très portable

3voto

pgl Points 2364

Il ya plusieurs façons que vous pouvez atteindre cet objectif. Ceci définit la taille du fichier de l'historique à 0:

export HISTFILESIZE=0

Ceci définit le fichier de l'historique d' /dev/null, de manière efficace de le désactiver:

export HISTFILE=/dev/null

Pour les commandes individuelles, vous pouvez préfixer la commande avec un espace et il ne sera pas sauvegardé dans le fichier d'historique. Notez que cette fonction nécessite que vous avez l' ignorespace de la valeur inclus dans l' $HISTCONTROL variable d'environnement (man bash et de recherche pour l' ignorespace pour plus de détails).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X