Есть ли способ временно приостановить отслеживание истории в bash, чтобы войти в своего рода режим «инкогнито»? Я ввожу в свой терминал информацию, которая не нужна для записи конфиденциальной финансовой информации.
bash
command-history
Нафтули Кей
источник
источник
HISTFILE
проверяется только при выходе из bash, поэтому первый метод не работает как есть (если вы восстановите значение, команда будет сохранена).set +o history
работает как указано.set +o history
иset -o history
для переключения назад и вперед, когда я делаю секретные вещи;)unset HISTFILE
не работает.set -/+o history
работает как шарм! спасибоИспользуя bash, установите
HISTCONTROL="ignorespace"
и поставьте перед пробелом любую команду, которую вы не хотите записывать в историю. В случае, если вы забыли принять какие-либо меры, есть такжеhistory -d <number>
для удаления конкретной записи илиhistory -c
для очистки всей истории команд.источник
Убедитесь, что
HISTCONTROL
содержитignorespace
. Возможно, вы захотите добавитьHISTCONTROL=ignorespace
(HISTCONTROL=ignoredups:ignorespace
или что-то) к вашему~/.bashrc
. Тогда любая командная строка, которая начинается с пробела, исключается из истории.Другая возможность - начать новый сеанс bash, который не сохраняет его историю.
источник
Если вам нужно избежать сохранения нескольких команд и вы все еще хотите использовать стрелку вверх для доступа к предыдущим командам, используйте:
Существует четыре способа (уровня) управления хранением команд.
Первый и
ignorespace
самый простой - использовать (или игнорировать):Это позволит использовать пробел перед командами, которые вы хотите избежать записи в списке памяти
history
. И, как следствие, поскольку в памяти нет записанной команды, которая могла бы быть отправлена в файл, также будет исключена отправка одной команды в файл, указанный в$HISFILE
.Избегайте записи команд в файл в
$HISTFILE
:Null
HISTFILE=''
и / или установлен наHISTFILE=/dev/null
работает с тем же эффектом. Поймите, что команды все еще записываются в список памяти, попробуйтеhistory
команду или стрелку вверх.Предупреждение: если HISTFILE сбрасывается до того, как оболочка существует, все, что было записано в памяти, все равно может быть записано в файл.
Избегайте записи новых команд в список истории в памяти. И, как не будучи в памяти, не может быть записано в файл.
Повторно включить с
shopt -os history
(илиset -o history
)Удалите все команды из списка истории в памяти:
Все команды удаляются (из памяти), и, следовательно, ничто не может быть сохранено в файл, конечно, пока переменная не будет снова установлена в какое-либо действительное числовое значение.
источник
man history
это не удастся большинству из нас.HISTIGNORE
, чтоsubsumes
функцияHISTCONTROL
.LESS=+'/^ *HISTI' man bash
(не так ли это «страницы руководства»?). @NathanBasaneseСуществует один простой способ отключить историю, поэтому команды не будут сохраняться в
.bash_history
файле.Вы должны поместить пробел или символ табуляции перед любой командой, чтобы эта команда не сохранялась в истории. Например:
Команда
pwd
не будет сохранена в истории, потому что она имеет пробел в передней части.источник
Это мой путь. На случай, если неустановленный HISTORY / HISTFILE / HISTCONTROL и т. Д ... не работает, экспорт его в / dev / null всегда работал для меня.
источник
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)