Виконати команду терміналу, не зберігаючи його в .bash_history на OS X?


19

На цьому веб-сайті йдеться про те, що в Linux ви можете додати spaceкоманду терміналу перед командою терміналу, щоб не використовувати її .bash_history.

Схоже, це не працює для Mac OS X. Хтось знає про спосіб виконання однієї команди на Терміналі, не зберігаючи її в історії?

Я не хочу очищати історію.

введіть тут опис зображення


додавання `` (пробілу) перед термінальною командою не дозволить уникнути його історії
warren

2
@warren Ні, це так. Вам просто потрібно включити функцію в bash.
goweon

@firebat - правильно: але так як це те , що ви повинні включити, він може або не може працювати скрізь :)
Warren

Відповіді:


24

Додайте наступний рядок до ~ / .bashrc

export HISTCONTROL=ignorespace

Потім source ~/.bashrcоновіть налаштування

Це повинно включити цю функцію в bash. Якщо це не працює, можливо, вам доведеться додати його до ~ / .bash_profile замість ~ / .bashrc, оскільки OS X завантажує їх трохи інакше, ніж я думаю, що Linux.


Як я можу використовувати два варіанти з цим? Я хочу використовувати, export HISTCONTROL=erasedups,ignorespaceале я думаю, що синтаксис не працює ...
cwd

2
export HISTCONTROL=erasedups:ignorespace
goweon

2
Але я думаю, що це насправдіexport HISTCONTROL=ignoredups:ignorespace
goweon

3
Параметр "ignoredups" ігнорує повторювані рядки. Введення "ls" двадцять разів поспіль закінчується лише одним із них в історії. Однак введення "ls", а потім "ps", а потім "ls" знову зберігатиме "ls" і "ps" кожен раз - якщо у вас немає bash 3 і встановлено "erasedups". Якщо це встановлено, жодні копії взагалі не вводяться в історію башів. - cyberciti.biz/faq/bash-for-loop-array
cwd

1
Це не працює для мене. Я спробував export HISTCONTROL=erasedups:ignorespace і те, export HISTCONTROL=ignoredups:ignorespaceі навіть export HISTCONTROL=ignoredups:ignoreboth. Але те, що я отримую, - це один запис для кожного сеансу, а не для сеансів: тобто, якщо команда вже .bash_historyзапущена на початку сеансу, і вона буде знову набрана, вона буде додана в історію (хоча для цього сеансу лише один раз) . Як я можу переконатися, що команда, яка вже є у .bash_history, коли я запускаю Terminal, не буде додана, якщо вона знову введена?
orome

1

Якщо ви не переймаєтесь тим, як підтримувати сеанс активним, це може працювати:

kill -9 $$

Це знищить поточний сеанс замість виходу з системи, що [теоретично] означає, що ваша історія не буде збережена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.