Есть несколько надежных способов запретить сохранение команд в history, от временного отключения до полного. Разберем разные варианты для любого случая на Debian 12.
1. Быстрый способ для одной команды (Перед ее выполнением)
Просто поставьте пробел перед командой. В стандартной настройке bash команды, начинающиеся с пробела, не попадают в history
.
Важно: Это работает, только если установлена опция HISTCONTROL=ignorespace
(что обычно по умолчанию и есть).
echo "эта команда не сохранится" # Обратите внимание на пробел в начале
2. Временное отключение history на время сессии
Это самый простой и надежный способ для выполнения серии команд.
# Выключить запись history для текущей сессии set +o history # ... выполняете любые команды, они не сохранятся ... # Например: sudo service ssh restart cd /some/secret/directory # Включить запись history обратно set -o history
3. Удаление последней команды из history
Если команда уже выполнена и попала в history, ее можно удалить.
# Удаляет последнюю команду из файла history -d $(history 1) # Или проще, если знаете ее номер: history -d 1055 # Чтобы удалить саму команду 'history -d', выполните: history -d $(history 1)
4. Постоянная настройка для точечного исключения команд
Добавьте в ~/.bashrc
настройку, которая будет игнорировать команды, начинающиеся с определенного паттерна (например, с пробела или secret
).
# Откройте .bashrc nano ~/.bashrc # Добавьте или найдите строку (обычно она уже есть по умолчанию) export HISTCONTROL=ignorespace # Игнорировать команды с пробелом в начале # Чтобы игнорировать команды, содержащие определенное слово (например, 'mysecret'), # можно использовать более сложный фильтр через HISTIGNORE export HISTIGNORE='*mysecret*:*mysql*' # Через двоеточие можно добавить маски
После правки примените изменения:
source ~/.bashrc
5. Кардинальный способ: Полное отключение history
Не рекомендуется, но если нужно полностью убить историю для пользователя, добавьте в ~/.bashrc
:
# Предотвращает создание файла .bash_history unset HISTFILE # Или установите размер history в 0 команд export HISTSIZE=0 export HISTFILESIZE=0
6. “Атомная” команда: Сразу после выполнения стереть всю историю
Если нужно почистить всё сразу и полностью.
# Очистить кэш history в текущей сессии history -c # Удалить файл истории (!!! ОСТОРОЖНО, это удалит ВСЮ историю !!!) rm -f ~/.bash_history # Или просто обнулить файл > ~/.bash_history
Краткая шпаргалка:
Что нужно сделать? | Команда или действие |
---|---|
Одна “невидимая” команда | ␣<команда> (поставить пробел в начале) |
Серия команд | set +o history , команды…, set -o history |
Удалить последнюю команду | history -d $(history 1) |
Проверить, включено ли ignorespace | echo $HISTCONTROL |
Полная очистка | history -c && rm -f ~/.bash_history |
Самый удобный и часто используемый способ — set +o history
. Он не требует предварительной настройки и абсолютно надежен.