Я создаю скрипт для запуска при запуске, который говорит:
_cleanthehistory ()
{
/bin/echo "cleaning the history"
history -c
}
_cleanthehistory
Дело здесь в том, что это не работает из скрипта, но если я запускаю его из командной строки, работает , Есть идеи? Заранее спасибо. Пабло.
История включена только для интерактивных оболочек, но не для сценариев. Так что в сценарии history -c
не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, так как /tmp
очищается во время загрузки, просто обрежьте или удалите ~/.bash_history
.
echo "cleaning the history"
> /home/yourusername/.bash_history
Используется перенаправление оболочки без команды. Это заставляет оболочку просто открывать файл для записи (обрезать его, если он уже существует), а затем закрывать его, ничего не записывая в него (поскольку нет команды для записи чего-либо в него).
С другой стороны, не используйте абсолютные пути к командам в скриптах. Например. используйте echo
, а не /bin/echo
.
update : или, если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null
в ваш ~/.bashrc
.
Как я уже сказал в своем комментарии, history -c
просто удаляет историю текущего сеанса, т.е. только те команды, которые выполнял ваш скрипт. Чтобы очистить все данные, включая старые сессии, вам нужно сделать что-то вроде
rm -f $HOME/.bash_history