скрипт чистой истории не работает

Я создаю скрипт для запуска при запуске, который говорит:

_cleanthehistory ()
{
/bin/echo "cleaning the history"
history -c
}
_cleanthehistory

Дело здесь в том, что это не работает из скрипта, но если я запускаю его из командной строки, работает , Есть идеи? Заранее спасибо. Пабло.

0
задан 13 June 2012 в 18:32

2 ответа

История включена только для интерактивных оболочек, но не для сценариев. Так что в сценарии history -c не принесет много пользы. Если вы просто хотите очистить историю bash вашего пользователя во время загрузки, так как /tmp очищается во время загрузки, просто обрежьте или удалите ~/.bash_history.

echo "cleaning the history"
> /home/yourusername/.bash_history

Используется перенаправление оболочки без команды. Это заставляет оболочку просто открывать файл для записи (обрезать его, если он уже существует), а затем закрывать его, ничего не записывая в него (поскольку нет команды для записи чего-либо в него).

С другой стороны, не используйте абсолютные пути к командам в скриптах. Например. используйте echo, а не /bin/echo.

update : или, если вы вообще не хотите сохранять историю bash, вы можете поместить что-то вроде HISTFILE=/dev/null в ваш ~/.bashrc.

0
ответ дан 13 June 2012 в 18:32

Как я уже сказал в своем комментарии, history -c просто удаляет историю текущего сеанса, т.е. только те команды, которые выполнял ваш скрипт. Чтобы очистить все данные, включая старые сессии, вам нужно сделать что-то вроде

rm -f $HOME/.bash_history
0
ответ дан 13 June 2012 в 18:32

Другие вопросы по тегам:

Похожие вопросы: