Как запретить сохранение команд в history

Как запретить сохранение команд в history

Есть несколько надежных способов запретить сохранение команд в 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. Он не требует предварительной настройки и абсолютно надежен.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix.ru © Все права защищены 2015 - 2025

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!