Скрипт удаления истории не работает
Я создаю скрипт shelll, который стирает историю команд в терминале. Но скрипт не стирает историю команд в терминале. Я следую приведенной ниже процедуре 1. Мой скрипт содержит следующие строки
#!/bin/bash
history -c
2. Я изменил файл, чтобы быть исполняемым
chmod +x foo.sh
3. Я запускаю скрипт
./foo.sh
но скрипт не работает и не стирает мою историю команд. Зачем?
Обновление: я альтернативно пишу сценарий, чтобы очистить историю. все та же проблема возникает. Мой альтернативный сценарий,
#!/bin/bash
# Bash Shell store history in the file ~/.bashrc
rm -r ~/.bash_history
Это тоже непонятная история команд.
2 ответа
rm -f ~/.bash_history
(не используйте-r
!) удалит журнал истории, который в конфигурации большинства дистрибутивов по умолчанию читается при запуске новой оболочки. Таким образом, это повлияет только на оболочки, которые вы запускаете после выполнения этой команды. Вы можете заменить вашу текущую оболочку другой, запустивexec "$SHELL"
чтобы избежать создания нового окна терминала.history -c
очищает историю для текущей оболочки и не удаляет~/.bash_history
, Но когда вы запускаете сценарий, текущая оболочка создает новую оболочку для запуска сценария и выходит из этой оболочки после завершения сценария. Вместо этого, чтобы выполнить скрипт в текущей оболочке, вы должны получить скрипт. В вашем случае попробуйте запустить. foo.sh
,
Если вы хотите "очистить наши следы" после выхода из оболочки, вы можете запустить эти команды из сценария выхода из системы, то есть ~/.bash_logout
файл.
Может быть, вы вообще не хотите сохранять свою историю команд, в этом случае вы можете установить HISTFILESIZE=0
(в вашем ~/.profile
файл или в оболочке, которую вы используете).
Смотрите также: http://ubuntuforums.org/showthread.php?t=920530