Führen Sie einen Terminalbefehl aus, ohne ihn unter OS X unter .bash_history zu speichern.

19

Auf dieser Site heißt es, dass Sie unter Linux spaceeinen Befehl vor einem Terminal hinzufügen können , um ihn fernzuhalten .bash_history.

Dies scheint unter Mac OS X nicht zu funktionieren. Kennt jemand eine Möglichkeit, einen einzelnen Befehl auf dem Terminal auszuführen, ohne ihn im Verlauf zu speichern?

Ich möchte die Geschichte nicht löschen.

Bildbeschreibung hier eingeben

cwd
quelle
einen `` (Raum) Zugabe vor einem Terminal - Befehl wird nicht es von der Geschichte draußen bleiben
warren
2
@warren Nein, das tut es. Sie müssen nur die Funktion in Bash aktivieren.
Goweon
@firebat - rechts: aber da es etwas , das Sie haben zu ermöglichen, kann es oder möglicherweise nicht überall :)
warren

Antworten:

24

Fügen Sie die folgende Zeile zu ~ / .bashrc hinzu

export HISTCONTROL=ignorespace

Dann source ~/.bashrcaktualisieren Sie die Einstellungen

Dies sollte diese Funktion in Bash aktivieren. Wenn es nicht funktioniert, müssen Sie es möglicherweise zu ~ / .bash_profile anstelle von ~ / .bashrc hinzufügen, da sie unter OS X etwas anders geladen werden als unter Linux, glaube ich.

Goweon
quelle
Wie kann ich damit zwei Möglichkeiten nutzen? Ich möchte verwenden, export HISTCONTROL=erasedups,ignorespaceaber ich denke, dass die Syntax nicht funktioniert ...
CWD
2
export HISTCONTROL=erasedups:ignorespace
Goweon
2
Aber ich denke, es ist tatsächlichexport HISTCONTROL=ignoredups:ignorespace
Goweon
3
Die Einstellung "Ignoredups" ignoriert wiederholte Zeilen. Wenn Sie zwanzig Mal hintereinander "ls" eingeben, wird nur eines davon in der Geschichte angezeigt. Wenn Sie jedoch "ls" und dann "ps" und dann "ls" erneut eingeben, werden jedes Mal "ls" und "ps" gespeichert - es sei denn, Sie haben Bash 3 und setzen "Erasedups". Wenn dies eingestellt ist, werden überhaupt keine Duplikate in den Bash-Verlauf eingetragen. - cyberciti.biz/faq/bash-for-loop-array
cwd
1
Das funktioniert bei mir nicht. Ich habe versucht , beide export HISTCONTROL=erasedups:ignorespace und export HISTCONTROL=ignoredups:ignorespacesogar export HISTCONTROL=ignoredups:ignoreboth. Was ich jedoch erhalte, ist ein einzelner Eintrag für jede Sitzung und nicht für alle Sitzungen: Wenn sich ein Befehl bereits .bash_historyzu Beginn einer Sitzung befindet und erneut eingegeben wird, wird er dem Verlauf hinzugefügt (allerdings nur einmal für diese Sitzung). . Wie stelle ich sicher, dass ein Befehl, der sich beim Starten von Terminal bereits in `.bash_history befindet, nicht hinzugefügt wird, wenn er erneut eingegeben wird?
Orome
1

Wenn Sie nicht daran interessiert sind, die Sitzung aktiv zu halten, funktioniert Folgendes möglicherweise:

kill -9 $$

Anstatt sich abzumelden, wird die aktuelle Sitzung abgebrochen, was [theoretisch] bedeutet, dass Ihr Verlauf nicht gespeichert wird.

Labyrinth
quelle