Сбросить историю внутри 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