Czy wykonać polecenie terminalu bez zapisywania go w .bash_history w systemie OS X?


19

Ta strona mówi, że w Linuksie możesz dodać spacepolecenie przed terminalem, aby go uniknąć .bash_history.

Wydaje się, że to nie działa w systemie Mac OS X. Czy ktoś wie, jak wykonać jedno polecenie na terminalu bez zapisywania go w historii?

Nie chcę wyczyścić historii.

wprowadź opis zdjęcia tutaj


dodanie `` (spacji) przed poleceniem terminalu nie spowoduje, że nie znajdzie się w historii
warren

2
@ warren Nie, to prawda. Musisz tylko włączyć tę funkcję w bash.
goweon

@firebat - racja: ale ponieważ jest to coś, co musisz włączyć, może, ale nie musi działać wszędzie :)
warren

Odpowiedzi:


24

Dodaj następujący wiersz do ~ / .bashrc

export HISTCONTROL=ignorespace

Następnie, source ~/.bashrcaby odświeżyć ustawienia

To powinno włączyć tę funkcję w bash. Jeśli to nie działa, być może będziesz musiał dodać go do ~ / .bash_profile zamiast ~ / .bashrc, ponieważ OS X ładuje je nieco inaczej niż Linux.


Jak mogę z tym korzystać z dwóch opcji? Chcę użyć, export HISTCONTROL=erasedups,ignorespaceale myślę, że składnia nie działa ...
cwd

2
export HISTCONTROL=erasedups:ignorespace
goweon

2
Ale myślę, że to rzeczywiścieexport HISTCONTROL=ignoredups:ignorespace
goweon

3
Ustawienie „ignorowane” ignoruje powtarzające się linie. Wpisanie „ls” dwadzieścia razy z rzędu kończy się na jednym z nich w historii. Jednak wpisanie „ls”, a następnie „ps”, a następnie „ls” ponownie zapisze „ls” i „ps” za każdym razem - chyba że masz bash 3 i ustawisz „wymazane”. Jeśli to ustawione, żadne duplikaty nie zostaną w ogóle wprowadzone do historii bash. - cyberciti.biz/faq/bash-for-loop-array
cwd

1
To mi nie działa. Próbowałem zarówno export HISTCONTROL=erasedups:ignorespace i export HISTCONTROL=ignoredups:ignorespacenawet export HISTCONTROL=ignoredups:ignoreboth. Ale otrzymuję pojedynczy wpis dla każdej sesji, a nie między sesjami: tzn. Jeśli polecenie jest już .bash_historyna początku sesji i zostanie wpisane ponownie, zostanie dodane do historii (choć tylko raz dla tej sesji) . Jak mogę się upewnić, że polecenie, które jest już w `.bash_history po uruchomieniu terminalu, nie zostanie dodane, jeśli zostanie wprowadzone ponownie?
orome

1

Jeśli nie martwisz się o utrzymanie sesji, może to działać:

kill -9 $$

Zabije bieżącą sesję zamiast wylogowania, co [teoretycznie] oznacza, że ​​twoja historia nie zostanie zapisana.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.