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

cwd
la source
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.

goweon
la source
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é.

garenne
la source