Выполнить команду терминала, не сохраняя ее в .bash_history на OS X?

19

На этом сайте написано, что в Linux вы можете добавить spaceкоманду перед терминалом, чтобы не допустить ее .bash_history.

Похоже, что это не работает для Mac OS X. Кто-нибудь знает, как выполнить одну команду в Терминале, не сохраняя ее в истории?

Я не хочу, чтобы очистить историю.

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

УХО
источник
добавление `` (пробела) перед командой терминала не исключит ее из истории
Уоррен
2
@ Warren Нет, это так. Вам просто нужно включить функцию в Bash.
Goweon
@firebat - верно: но поскольку это то, что вы должны включить, оно может работать или не работать везде :)
Уоррен

Ответы:

24

Добавьте следующую строку в ~ / .bashrc

export HISTCONTROL=ignorespace

Затем source ~/.bashrcобновить настройки

Это должно включить эту функцию в bash. Если это не сработает, вам, возможно, придется добавить его в ~ / .bash_profile вместо ~ / .bashrc, поскольку OS X загружает их немного иначе, чем linux, я думаю.

goweon
источник
Как я могу использовать два варианта с этим? Я хочу использовать, 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». Если это установлено, дубликаты не будут внесены в историю Bash вообще. - 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 при запуске терминала, не будет добавлена, если она будет введена снова?
Оромэ
1

Если вы не заинтересованы в сохранении активности сеанса, это может сработать:

kill -9 $$

Он завершит текущий сеанс вместо выхода из системы, что [теоретически] означает, что ваша история не будет сохранена.

кроличий садок
источник