Exécuter une commande de terminal sans l'enregistrer dans .bash_history sur OS X?


19

Ce site dit que sous Linux, vous pouvez ajouter une spacecommande avant un terminal pour la garder hors de .bash_history.

Cela ne semble pas fonctionner pour Mac OS X. Quelqu'un connaît-il un moyen d'exécuter une seule commande sur le terminal sans l'enregistrer dans l'historique?

Je ne veux pas effacer l'histoire.

entrez la description de l'image ici


l'ajout d'un `` (espace) avant une commande de terminal ne le gardera pas hors de l'histoire
warren

2
@warren Non, c'est le cas. Il vous suffit d'activer la fonctionnalité dans bash.
goweon

@firebat - à droite: mais comme c'est quelque chose que vous devez activer, cela peut ou peut ne pas fonctionner partout :)
warren

Réponses:


24

Ajoutez la ligne suivante à ~ / .bashrc

export HISTCONTROL=ignorespace

Puis source ~/.bashrcpour rafraîchir les paramètres

Cela devrait activer cette fonctionnalité dans bash. Si cela ne fonctionne pas, vous devrez peut-être l'ajouter à ~ / .bash_profile au lieu de ~ / .bashrc car OS X les charge un peu différemment de linux je pense.


Comment puis-je utiliser deux options avec cela? Je veux utiliser export HISTCONTROL=erasedups,ignorespacemais je pense que la syntaxe ne fonctionne pas ...
cwd

2
export HISTCONTROL=erasedups:ignorespace
goweon

2
Mais je pense que c'est en faitexport HISTCONTROL=ignoredups:ignorespace
goweon

3
Le paramètre "ignoredups" ignore les lignes répétées. Taper "ls" vingt fois de suite ne se termine qu'avec l'un d'eux dans l'histoire. Cependant, taper "ls" puis "ps" puis "ls" à nouveau stockera "ls" et "ps" à chaque fois - à moins que vous n'ayez bash 3 et défini "erasedups". Si ce paramètre est défini, aucun doublon n'est enregistré dans l'historique de bash. - cyberciti.biz/faq/bash-for-loop-array
cwd

1
Ça ne marche pas pour moi. Je l' ai essayé à la fois export HISTCONTROL=erasedups:ignorespace et export HISTCONTROL=ignoredups:ignorespaceet même export HISTCONTROL=ignoredups:ignoreboth. Mais ce que je reçois est une seule entrée pour chaque session plutôt qu'entre les sessions: c'est-à-dire, si une commande est déjà .bash_historyentrée au début d'une session, et qu'elle est tapée à nouveau, elle sera ajoutée à l'historique (bien qu'une seule fois pour cette session) . Comment puis-je m'assurer qu'une commande qui est déjà dans `.bash_history lorsque je lance Terminal n'est pas ajoutée si elle est entrée à nouveau?
orome

1

Si vous ne souhaitez pas que la session reste active, cela peut fonctionner:

kill -9 $$

Cela tuera la session en cours au lieu de vous déconnecter, ce qui [théoriquement] signifie que votre historique ne sera pas sauvegardé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.