По умолчанию каждая система Linux хранит команды, которые вы выполняете в терминальной оболочке, в файле истории. Это полезно для поиска и повторного выполнения прошлых команд, которые могут быть очень длинными. Это также полезно для системных администраторов, чтобы отслеживать различные команды, которые выполняются в их системе. Но иногда вы можете захотеть выполнять команды Linux без записи в историю. В этой статье мы узнаем, как выполнять команды Linux без сохранения их в истории shell.
Как выполнять команды Linux без записи в историю
Чтобы просмотреть историю оболочки, выполните следующую команду.
1 | history |
Обратите внимание, что приведенная выше команда покажет только те команды командного интерпретатора, которые выполнял текущий зарегистрированный пользователь. Она не покажет прошлые команды других пользователей, если только вы не переключитесь на этого пользователя, как пользователь root или sudo.
Удаление команды Linux из истории после выполнения
Запись команд в историю оболочки является автоматическим процессом и в большинстве случаев не может быть предотвращена. Если вы выполнили команду, она будет сохранена в файле истории. Что вы можете сделать, так это удалить ее сразу после выполнения, чтобы она была удалена из истории. Вот команда, которая это делает.
1 | history -d $(history 1) |
В приведенной выше команде мы используем опцию -d с командой history для удаления записи из файла истории. Команда $(history 1) выводит последнюю запись в файле истории, которая была удалена с помощью опции -d.
Вы также можете добавить следующую строку к вашей команде shell, чтобы не запускать ее отдельно.
1 | ;history -d $(history 1) |
Например, следующие команды передадут эхом строку, удалят ее запись из истории, а затем отобразят последнюю историю, чтобы вы могли убедиться в удалении.
1 2 | echo "Эта команда не сохраняется в истории";history -d $(history 1) history | tail |
Также вы можете установить значение системной переменной $HISTCONTROL в файле ~/.bashrc на ignorespace или ignoreboth. Это заставит оболочку игнорировать команды, начинающиеся с пробела, и не записывать их в файл истории.
1 | nano ~/.bashrc |
Проверьте значение параметра $HISTCONTROL. Если оно отсутствует, установите его, добавив следующую строку.
1 | HISTCONTROL=ignorespace |
Если вы установите значение ignoreboth, то команда будет игнорировать команды с префиксом пробела, а также дубликаты записей, которые не будут сохраняться в истории.
Сохраните и закройте файл. Перезагрузите профиль bash, чтобы применить изменения.
1 | source ~/.bashrc |
Теперь, если вы добавите к команде пробел, как показано ниже, она не будет сохранена в истории.
1 2 | echo "hello world" history | tail |
Заключение
В этой статье мы узнали, как выполнять команды Linux, не занося их в историю.