Сбросить историю внутри bash-скрипта

Я хочу сделать bash-скрипт, который очищает историю, т.е. работает аналогично команде

history -c

Итак, я начал со следующего кода:

#!/bin/bash
history     #displaying history
history -c  #clearing history

Никто из них не работал. В ходе некоторых поисков я узнал, что bash по умолчанию отключает историю в неинтерактивных оболочках, но мы можем включить ее. Поэтому после редактирования я попробовал следующий код:-

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
history
history -c

Показывает вывод:-

[root@localhost lib]# bash a.sh
1  history
[root@localhost lib]#

И кроме того, команда hisory -c не работает. Потому что я все еще получаю историю команд, когда набираю историю. Это означает, что и история, и история -c не работали внутри скрипта bash.

Как мы должны использовать это тогда?

РЕДАКТИРОВАТЬ 1- Я хочу удалить историю текущего сеанса, она должна где-то храниться. Я пытался использовать команды, подобные следующим, но безрезультатно:-

cat /dev/null > ~/.bash_history && history -c && exit


cat /dev/null > ~/.bash_history

PS-это не дублированный вопрос. Пожалуйста, постарайтесь понять разницу, прежде чем отмечать ее как дубликат. Я хочу очистить историю текущей сессии через скрипт. Мне все равно, если это написано обратно или что-то еще. Другой вопрос - навсегда удалить историю. Это не имеет ничего общего со скриптом или через другой терминал.

2 ответа

Вы не можете удалить историю как это, поскольку это удалит историю текущего сеанса.

Если вы хотите очистить свою историю, используя скрипт, используйте следующую команду в вашем скрипте

> ~/.bash_history

Достаточно очистить всю историю Bash.

Я думаю что

history -c 

только очистит историю внутри видения, связанного со сценарием. Этот пример:

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
uname -a > /dev/null
history
history -c
history

показывает вывод:

....
500  history
501  uname -a > /dev/null
502  history
4  history

это то, что каждый ожидает.

Если вы хотите стереть историю, попробуйте

> $HISTFILE
Другие вопросы по тегам