🐧 Как выполнить команду Linux без сохранения ее в истории

Мануал

По умолчанию каждая команда, которую вы выполняете на терминале, сохраняется оболочкой (командным интерпретатором) в определенном файле, называемом файлом истории или историей команд оболочки

В Bash (наиболее популярной оболочке в Linux-системах) по умолчанию количество команд, сохраняемых в истории, составляет 1000, а в некоторых дистрибутивах Linux – 500.

Чтобы проверить размер истории в Bash, выполните эту команду:

$ echo $HISTSIZE

Чтобы увидеть старые команды, которые вы выполняли, вы можете использовать команду history для отображения истории команд оболочки:

$ history

Иногда вам может понадобиться запретить оболочке записывать команды в историю команд.

Это можно сделать следующим образом.

Удаление команды Linux из истории после выполнения

Вы можете немедленно удалить команду из истории оболочки после ее выполнения в командной строке, добавив к ней команду history -d $(history 1).

Подкоманда $(history 1) извлекает последнюю запись в истории в текущем терминальном сеансе, где 1 – это смещение, а опция -d помогает удалить ее.

Любая команда, выполняемая в обычном режиме, сохраняется в истории оболочки.

$ echo "This command is saved in history"
$ history | tail

Однако, когда вы добавляете команду history -d $(history 1) к командной строке, она сразу же удаляется из истории оболочки, как показано на ниже:

$ echo "This command is not saved in history";history -d $(history 1)
$ history | tail

Другой способ предотвратить сохранение команды в истории – это префикс команды с пробелом.

Но это полностью зависит от значения переменной оболочки $HISTCONTROL, определенной в файле запуска ~/.bashrc Bash.

Для работы этого метода она должна иметь одно из следующих значений: ignorespace или ignoreboth.

Вы можете проверить значение переменной $HISTCONTROL, как показано далее:

$ echo $HISTCONTROL
или
$ cat ~/.bashrc | grep $HISTCONTROL

Если вышеупомянутая переменная оболочки установлена, то любая команда с пробелом не сохраняется в истории:

$ echo "This command is not prefixed with space, it will be saved in history!"
$ echo "This command is prefixed with space, it will not be saved in history!"

Вот еще несколько интересных статей об истории Bash и командах history:

 

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